Konsta Toivonen - Haaga-Helia ammattikorkeakoulu

Etusivulle

Takaisin

Tehtävien toimeksianto: http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p

Tehtävissä käytetyt laitteet:
HP ProBook 655 G2: Xubuntu 16.04 LTS x64
Digital Ocean -palvelun ylläpitämä virtuaalipalvelin: 1 GB Memory / 25 GB Disk / AMS3 - Ubuntu 16.04.3 x64
Desktop: Intel i5-3570K @3.4GHz, Nvidia Geforce GTX 970, 16GB DDR3-RAM, Xubuntu 16.04 LTS x64


H6

a) Kultainen polku. Tee ensimmäinen versio modulistasi, joka toimii ainakin optimiolosuhteissa. Jos jokin säätö on poikkeuksellisen hankala, voit tehdä sen tässä versiossa käsin, ja dokumentoida ajamasi käskyt. (Valmis moduli tarvitaan vasta esitykseen ensi viikolla).

Loin GitHubiin repositoryn: https://github.com/a1702645/steamcmd-garrysmod.git

Modulikseni päätin luoda tilan, jolla asennetaan Steam -videopelialustan komentokehoteversio SteamCMD, jossa puolestaan asennetaan Garry's Mod Dedicated Server, joka käynnistetään halutuilla parametreilla automaattisesti.

Loin kansioon "/srv/salt/" kaksi kansiota: "steamcmd" ja "install_steamcmd"

Kansiossa "install_steamcmd" on tiedosto "init.sls", jolla ensin sallitaan 32 bittisten ohjelmien asentaminen komennolla "sudo dpkg --add-architecture i386"

Asennetaan ohjelma Steam käyttäen ennalta määrättyjä arvoja asennuksen aikana esitettäviin vaihtoehtoihin.

Näiden jälkeen asennetaan ohjelma Steamcmd.

install-steamcmd -state

Ohjelma Steam ei olisi tarpeellinen modulin kannalta, mutten saanut automatisoitua Steamcmd:n asennusta johtuen lisenssisopimuksen hyväksymisestä vaativasta kohdasta,
joten ratkaisin ongelman asentamalla Steamin (jonka asennus onnistui automatisoidusti) ja sen jälkeen Steamcmd:n, jolloin se ei enää kysy hyväksyntää jo kertaalleen hyväksyttyihin lisenssisopimuksiin.


Kansiossa "/srv/salt/steamcmd" on kaksi tiedostoa: "init.sls" ja "garrysmod_ds.txt"

Tiedosto "init.sls" kopioi orjan kotikansioon tiedoston "garrysmod_ds" ja ajaa ohjelmalla "Steamcmd" scriptin "garrysmod_ds" komennolla "steamcmd +runscript /home/konsta/garrysmod_ds"

Steamcmd

Scripti "garrysmod_ds" antaa ohjelmalle "Steamcmd" seuraavat ohjeet:
Ohjelman tulee sulkeutua komennon epäonnistuessa
Salasanaa ei kysytä
Kirjaudu sisään anonyyminä käyttäjänä (kaikkien pelien palvelinohjelmat eivät vaadi kirjautumista henkilökohtaisella Steam käyttäjällä"
Aseta ohjelman tekemien asennuksien oletussijainniksi "/home/konsta/garrysmod"
Asenna ja tarkista ohjelma tunnuksella 4020 (Garry's Mod Dedicated Server)
Sulje ohjelma

install garrysmod_ds


Steam-palvelimen asentamisen automatiointia varten loin kansion tiedoston "run.sh", joka asentaa tarvittavat paketit: git ja salt-minion.
Asettaa salt-minionille masterin "localhost"
Kloonaa GitHub repositoryn: "https://github.com/a1702645/steamcmd-garrysmod" komennolla "git clone https://github.com/a1702645/steamcmd-garrysmod"
ja ajaa scriptin "highstate.sh" komennolla "bash highstate.sh"

run.sh

Highstate.sh -scripti antaa komennon "sudo salt-call --local --file-root srv/salt/ state.highstate", joka ajaa "/srv/salt/top.sls" -tiedoston, josta tilat "install_steamcmd" ja "steamcmd" ajetaan.
Se myös ajaa scriptin "cheat.sh"

highstate

"cheat.sh":n jouduin tekemään koska Salt-tilassa annettuna SteamCMD:n komennot eivät toimineet, joten tein tiedoston joka antaa komennon "steamcmd +runscript /home/konsta/garrysmod_ds" ja ajaa scriptin "start-server.sh"

cheat

Viimeiseksi "start-server.sh" antaa komennon "./srcds_run -game garrysmod -maxplayers 16 +gamemode sandbox +map gm_flatgrass", jolla Garry's Mod Dedicated Server käynnistyy halutuilla asetuksilla.

start

Tällä hetkellä koko toimenpiteen toiminta on liian monen "viritelmän" varassa ja aion lopullista modulia varten karsia pois ylimääräisiä vaiheita (esim. cheat.sh). Aion myös tehdä modulista käyttäjänimestä riippumattoman.

b) Kokeile moduliasi tyhjässä koneessa. Voit käyttää virtualboxia, vagranttia tai livetikkua.

Kokeilin moduliani koneella johon on asennettu xubuntu 16.04LTS x64. Käytin asennettua käyttöjärjestelmää, sillä pelipalvelimen asennus ei onnistunut live-tilassa.

Annoin tietokoneelleni kaksi komentoa:

Ensin latasin run.sh tiedoston komennolla "wget https://raw.githubusercontent.com/a1702645/steamcmd-garrysmod/master/run.sh

Seuraavaksi ajoin run.sh:n komennolla "bash run.sh"

Koneelle asentui SteamCMD ja Garry's Mod Dedicated Server.

Gmod Dedicated Server käynnistyi automaattisesti. Sain palvelimesta esiin lisätietoja komennolla "status"

Server running

Unohdin lisätä moduliini tilan, joka asentaa palvelimelle Apache2:n, joten asensin sen käsin komennolla "sudo apt-get -y install apache2"

Otin yhteyden palvelimelleni toisella tietokoneella avaamalla Garry's Modin, jossa avasin konsolin painamalla Shift+§ ja annoin komennon connect 192.168.241.236

Connect
Gmod running

Yhteys toimi

c) Käyttäjätarina (user story): ketkä ovat modulisi käyttäjät? Mitä he haluavat saada aikaan modulillasi? Missä tilanteessa he sitä käyttävät? Mitkä ovat tärkeimmät parannukset käyttäjän kannalta, joita moduliin pitäisi vielä tehdä? Tähän c-kohtaan vain sanallinen vastaus, tämä kohta ei poikkeuksellisesti edellytä testejä tietokoneella.

Modulin tavoitteena on luoda helppo ja nopea tapa asentaa, konfiguroida ja käynnistää pelipalvelin. Modulin käyttäjä haluaa virtaviivaistaa uuden pelipalvelimen käyttöönottoa. Käyttääkseen modulia sellaisenaan, ei käyttäjän tarvitse osata kuin antaa lataus ja käynnistys -komennot terminaaliin.

Käytön kannalta käyttäjän olisi hyvä tutustua Garry's Mod Dedicated Serverin asetusten asettamiseen komentokehotteella.

Lähteet:

https://developer.valvesoftware.com/wiki/SteamCMD#Linux.2FOS_X
https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
https://developer.valvesoftware.com/wiki/SteamCMD#32-bit_libraries_on_64-bit_Linux_systems
https://askubuntu.com/questions/506909/how-can-i-accept-the-lience-agreement-for-steam-prior-to-apt-get-install/1017487#1017487
http://terokarvinen.com/2016/publish-your-project-with-github