Palvelinten Hallinta: Harjoitus 3 raportti

Tässä postauksessa raportoin Tero Karvisen Palvelinten Hallinta-kurssin tehtävää 3.

Käyttämäni tietokoneet ovat HP:n 655 G1 läppäri ja virtuaalipalvelin DigitalOceanilta ($5/kk paketti ilman mitään herkkuja). Käyttöjärjestelmä läppärissä on Xubuntu 16.04.03 LTS x64 (livetikku) ja virtuaalipalvelimessa Ubuntu 16.04.3 LTS x64.

Oman Xubuntun saat ladattua täältä.

Salt setup

Ennen tehtävien aloittamista annoin molemissa koneissa terminaaliin komennon

$ sudo apt-get update

ja palvelimen puolella

$ sudo apt-get upgrade -y

päivittääkseni kaiken ajan tasalle.

En pidä ssh:n käytöstä Windowsilla (jos pakko käytän PuTTY:a), joten asennetaan ssh, jotta voin käyttää palvelinta ssh:n avulla

$ sudo apt-get install -y ssh

Tehtävissä käytetään Salt:ia, joten asennetaan minion läppärille

$ sudo apt-get install -y salt-minion

ja master palvelimelle, tulimuurin portit 4505 ja 4506 auki ja /srv/ hakemistoon uusi kansio salt

$ sudo apt-get install -y salt-master
$ sudo ufw allow 4505/tcp
$ sudo ufw allow 4506/tcp
$ sudo mkdir /srv/salt

Muokataan läppärillä masteriksi virtuaalipalvelin

$ sudoedit /etc/salt/minionmaster: ip.os.oi.te
id: orjajäbä

Käynnistetaan salt-minion.service uudelleen

$ sudo systemctl restart salt-minion.service

Hyväksytään orja masterin puolella

$ sudo salt-key -A

orjajäbä.png

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

b) Tiedosto muotista: tee yksinkertainen SLS-tilatiedosto, joka laittaa muuttujan tiedostoon. Käytä jinjan kontekstimuuttujaa.

Tehdään tilaa varten oma kansio ja init.sls-tiedosto

master:/srv/salt$ sudo mkdir jinjatest1
$ sudoedit jinjatest1/init.sls

Ja tiedostoon sisään

/tmp/variabletest.txt:
  file.managed:
    - template: jinja
    - context:
      variable: Gyarados

Sitten kyseinen managed file

$ sudoedit muuttujatesti.txt

Magikarp evolves into {{ variable }}.

Contextin muuttujan indikaattori on siis “variable”, se tulee laittaa tiedoston sisään aaltosulkuihin, jos sisällön jonkun kohdan halutaan määräytyvän muuttujan mukaan.

Kokeillaan ja tsekataan tiedosto

master$ sudo salt '*' state.apply jinjatest1
minion$ cat /tmp/variabletest.txt

tehtäväb.png

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 c) SLS tilaa Jinjalla: tee yksinkertainen SLS-tilatiedosto, joka käyttää for-in -silmukaa. Voit esimerkiksi tehdä kolme tiedostoa silmukalla.

Tehdään tehtävälle oma kansionsa ja sls-tiedosto

master:/srv/salt$ sudo mkdir jinjatest2
$ sudoedit jinjatest2/init.sls

Koitetaan tehdä kolme tiedostoa for-in tyylillä.

{% for variable in ['squirtle', 'bulbasaur', 'charmander'] %}

/tmp/jinjatest2/{{ variable }}:
  file.managed:
  - makedirs: True

{% endfor %}

#makedirs not actually needed but I want them in a directory

Kokeillaan

master$ sudo salt '*' state.apply jinjatest2
minion$ ls /tmp/jinjatest2

tehtäväc.png

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

d) SSH-demonin portti: tee tila, joka asentaa SSH-demonin valittuun porttiin. Käytä portin valintaan Jinjaa, siten että sshd_config:issa “Port:”-kohdan arvo tulee Jinjan muuttujasta.

Multa itseasiassa löytyy jo SSH:n asennus-state ja conffaustiedostot githubista yhdeltä koulutunnilta jossa tehtiin kyseinen suoritus (kuva koska repository on private).

github.png

ssh_sls.pngsshd_config.png

Koodit ilman kohta tekemiäni muokkauksia voit halutessasi ottaa omaan käyttöön näistä linkeistä:

Kloonataan repository, siirretään haluamani osa siitä /srv/salt-kansioon ja nimetään hakemisto uudelleen (nyt nimellä Salt).

$ git clone https://github.com/käyttäjänimi/repository
$ sudo mv /home/käyttäjä/Salt /srv/salt/
$ sudo mv /srv/salt/Salt /srv/salt/ssh

Nimetään ssh.sls uudelleen ja muokataan tiedostoa.

/srv/salt/ssh$ sudo mv ssh.sls init.sls
$ sudoedit init.sls

openssh-server:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
    - source: salt://ssh/sshd_config
    - template: jinja
    - context:
      port: 1111
sshd:
 service.running:
 - watch:
 - file: /etc/ssh/sshd_config

Seuraavaksi sshd_config, johon lisään porttinumeron kohdalle muuttujaan viittaavan kohdan

$ sudoedit sshd_config
       ↓
Port {{ port }}
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes

##SSDH_CONFIG WITHOUT USELESS LINES EXCEPT THIS ONE##

Purgetaan jo valmiksi asennettu ssh minionilta varmuuden vuoksi

minion$ sudo apt-get purge -y openssh-client

Suljetaan ssh-yhteys Xubuntun puolella, otetaan windowsilla PuTTY esiin (PuTTY:n voit ladata tältä sivulta) ja otetaan yhteys palvelimeen.

putty.png

Perfektionistinä oli pakko päästä eroon “3 packages can be updated”-tekstistä ja hölmönä päivitin palvelimen Ubuntu 16.04.4-versioon niinkuin kuvasta näkyy, eikä Salt enää toimi sen jälkeen. Master ei enää saa/ota yhteyttä minioniin vaan antaa virheviestin
“Salt request timed out. The master is not responding. If this error persists after verifying the master is up, worker_threads may need to be increased.”
En ole näköjään ainoa joka on joskus törmännyt samaan ongelmaan päivityksen jälkeen. Valitaan korjauksen sijaan nopeampi vaihtoehto b.

Tehtävä jatkuu siis ei-yhtä-jännittävällä-tavalla niin, että orja ja master ovat samalla koneella.

Asennetaan siis salt-master äkkiä Xubuntuun ja vaihdetaan minionin master (oikea poistettava tiedosto löytyi täältä).

$ sudo apt-get install -y salt-master
$ sudo mkdir /srv/salt
$ sudo systemctl stop salt-minion.service
$ sudo rm -f /etc/salt/pki/minion/minion_master.pub
$ sudoedit /etc/salt/minion # tässä kohtaa uuden masterin tiedot
$ sudo systemctl start salt-minion.service
$ sudo salt-key -A

 

orjajäbä2.png

Tehdään uudestaan tarvittavat tiedostot täsmälleen niinkuin aikaisemminkin, eli kloonataan ne githubista ja muokataan sopivaksi.

Kokeillaan vihdoin ajaa state

$ sudo salt '*' state.apply ssh

ssh.png

Kaikki toimii. Paitsi Salt palvelimella. ):

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 e) Kokeile jonkun toisen opiskelijan tekemää Salt-tilaa. Kokeiltava tila voi olla mistä vain harjoituksesta. Opiskelijoiden raportteja ja koodeja löydät tämän sivun perästä kommenteista.

Valitsin Valtteri Partasen backup-staten, joka varmuuskopioi /home/käyttäjä-hakemiston 24 tunnin välein. Päätös tuli siitä, kun tämän avulla pääsee kokeilemaan itselle uutta cron.present-asetusta.

Tehdään siis tarvittava hakemisto ja tiedosto

/srv/salt$ sudo mkdir backup
$ sudoedit backup/init.sls

tar -cf backup.tar /home/roope/:
  cron.present:
    - user: roope
    - hour: '*/24'

# All glory to Valtteri Partanen for the YAML-code
# https://valtteripartanen.wordpress.com/2018/04/01/palvelinten-hallinta-h1/

Kokeillaan ja tarkistetaan, että backup.tar luotu.

$ sudo salt '*' state.apply backup

tehtäväe.png

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Advertisements

One thought on “Palvelinten Hallinta: Harjoitus 3 raportti”

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s