1. Hello Salt!

a) Asenna Salt ja siihen uusi orja

Asensin ensin Salt-masterin uudelle koneelle ja otin talteen sen hostnamen. Koneella ei ole palomuuria, joten siihen ei tarvinnut tehdä muutoksia.

$ sudo apt-get update
$ sudo apt-get -y install salt-master
$ hostname -I
192.168.43.111

Tämän jälkeen asensin ensin minion1 samalle koneelle.

Nimesin minionin ja lisäsin sille masterin ip:n. Tämän jälkeen käynninstin minion daemonin uudelleen, jotta muutos astuu voimaan. Sitten yhdistin vielä minionin salt-keylla. Parametrillä -A hyväksytään kaikki avaimet.

$ sudo apt-get update
$ sudo apt-get -y install salt-minion
$ sudoedit /etc/salt/minion
master: 192.168.43.111
id: minion1
$ sudo systemctl restart salt-minion.service
$ sudo salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
minion1
Proceed? [n/Y] y
Key for minion minion1 accepted

Tein vielä tässä vaiheessa minion2 toisella virtuaalikoneella.

Lopuksi testasin, että yhteys toimii.

$ sudo salt '*' cmd.run 'whoami'
minion2:
    root
minion1:
    root

b) Tee saltille idempotentti hei maailma

Idempotence is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application. 

https://en.wikipedia.org/wiki/Idempotence#:~:text=Idempotence%20(UK%3A%20%2F%CB%8C%C9%AA,result%20beyond%20the%20initial%20application.

Tein masterille kansiot /srv/salt/hello . Jokaiselle moduulille luon oman kansion. Tein hello-kansioon init.sls tiedoston, eli hei maailma tilan. Muoto YAML.

$ sudoedit /srv/salt/hello/init.sls
/tmp/hellohellu.txt:
  file.managed:
    - source: salt://hello/hellohellu.txt

Lisäsin vielä hellohellu.txt tiedoston sekä siihen sisältöä.

Ja otin hello-tilan käyttöön minionillani.

$ sudo salt '*' state.apply hello

Top file

In Salt, the file which contains a mapping between groups of machines on a network and the configuration roles that should be applied to them is called a top file.

Top files are named top.sls by default and they are so-named because they always exist in the “top” of a directory hierarchy that contains state files. That directory hierarchy is called a state tree.

https://docs.saltstack.com/en/latest/ref/states/top.html

Lopuksi tein vielä Top-tiedoston, jolla voi hallinnoida tiloja eri minioneilla.

$ sudoedit /srv/salt/top.sls
base:
  '*':
    - hello

Tähdellä * kerrotaan, että tätä tilaa sovelletaan kaikille minioneille. Arkkitehtuurissa on tasot environment: target: state files.

c) Kerää tietoa koneesta saltin avulla

Salt comes with an interface to derive information about the underlying system. This is called the grains interface, because it presents salt with grains of information. Grains are collected for the operating system, domain name, IP address, kernel, OS type, memory, and many other system properties.

https://docs.saltstack.com/en/latest/topics/grains/index.html

Keräsin minionien tietoja grains.items :n avulla. grains.items hakee kaikki tiedot, mutta lessillä niitä voi helpommin selata.

$ sudo salt '*' grains.items
$ sudo salt '*' grains.items | less
$ sudo salt '*' grains.items virtual

d) Kokeile jotain toista tilaa kuin file.managed. Tärkeitä ovat pkg.installed, file.managed, service.running, file.symlink, user.present, group.present. Ohjeita saa esim “sudo salt ‘*’ sys.state_doc pkg.installed|less”

  • pkg.installed – asentaa pakettia (ellei ole jo asennettu)
  • file.managed – lataa, päivittää tai muuttaa tiedostoa
  • service.running – käynnistää palvelun (ellei ole jo käynnissä)
  • file.symlink – symbolinen linkki
  • user.present – tarkistaa ja/tai lisää käyttäjän
  • group.present – tarkistaa ja/tai lisää ryhmän

Tein uuden kansion /srv/salt/installs/ johon tallensin init.sls tiedoston. Lisäsin tilan top-tiedostooni.

vim:
  pkg.installed

$ sudoedit /srv/salt/top.sls
base:
  '*':
    - hello
    - installs

Otan käyttöön kaikki uudet tilat kaikilla koneilla kerralla kommennolla:

$ sudo salt '*' state.apply

Ongelma:

Tässä esiintyi ensimmäinen ongelma, eli ainoastaan ensin luotu hello-tila päivittyi minioneille.

Joten koitin ottaa käyttöön top-tiedoston heti

$ sudo salt '*' state.highstate

Toimenpiteet:

Koitin ajaa komennon verboosina, mutta se ei antanut lisätietoja.

$ sudo salt-call –local -l debug state.apply installs

Ilmeisesti ongelma on nettiyhteydessä, tarkistin sen vielä pingillä

selvitin ip:n ja kokeilin sitä

Yritin muuttaa VirtualBoxin verkon NATiksi, ja lisäsin port forwarding rules. Ja reboot.

Tämän jälkeen koneet pääsivät verkkoon, mutta molemmat kaatuivat kun yritin käynnistää tilan…

Uudelleenkäynnistyksen jälkeen totesin, että masterin ip oli luonnollisesti vaihtunut eikä enää saanut yhteyttä minioneihin. Joten päivitin masterin ip:n /etc/salt/minion tiedostoihin.

Ongelma esiintyy kuitenkin edelleen… ja näköjään nyt en saa enää yhteyttä minioneihin. Syy siihen vaikuttaisi olevan konflikti, kun minionilla ja masterilla on sama ip.

Päätin nyt sitten muuttaa verkkoasetukset takaisin Bridgediin. Ja päivitän taas masterin ip:n. En kuitenkaan enää saa minioneihin yhteyttä.

Ratkaisu:

Hetken mietinnän jälkeen tajusin päivittää koneet ja käynnistää minionit manuaalisesti uudelleen. Jonka jälkeen molemmat vastasivat onnistuneesti ja sain käynnistettyä installs-tilan. Todennäköisesti en vain maltannut odottaa tarpeeksi pitkään, että asennus pääsee loppuun.

Palomuuri:

Aivan lopuksi tajusin aktivoida palomuurin koneilleni. Eli molemmille koneille enablasin ufw:n ja masteriin avasin reikiä.

Lähteet:

Salt Quickstart http://terokarvinen.com/2018/salt-quickstart-salt-stack-master-and-slave-on-ubuntu-linux/

Salt States http://terokarvinen.com/2018/salt-states-i-want-my-computers-like-this/

Leave a comment

Design a site like this with WordPress.com
Get started