Zahtjevi
Postavljanje majstora
Formula
Stup
Raspoređivanje
Potvrđivanje
Zaključak
Iako je SaltStack izvrstan alat za istovremeno izvođenje operacija na mnogim poslužiteljima, on također podržava unaprijed definirane konfiguracijske postavke po hostu pohranjene u jedinstvenoj datoteci koja se dalje naziva "stup". U ovom vodiču ćemo napisati malu SaltStack formulu za instalaciju Nginxa i automatizaciju implementacije virtualnih hostova pomoću stupova.
Zahtjevi
- Vultr instanca radi Ubuntu 17.04 (master)
- Dvije Vultr instance pokreću Ubuntu 17.04 ( minions )
Postavljanje majstora
Ako tek počinjete i još niste postavili svoj SaltStack master, pogledajte ovaj članak koji objašnjava kako započeti sa SaltStackom.
Započinjemo s stvaranjem mape za našu formulu koja dalje sadrži datoteke potrebne za SaltStackove operacije na našim minionima.
mkdir -p /srv/salt/nginx
Nakon kreiranja mape, možemo nastaviti s pisanjem init.slsdatoteke koja je bitan dio svake formule:
nginx:
pkg:
- installed
/etc/nginx/sites-enabled/virtualhosts.conf:
file.managed:
- source: salt://nginx/files/virtualhosts.jinja
- template: jinja
- user: root
- group: root
- mode: 655
cmd:
- run
- names:
- service nginx restart
Kao što ste vjerojatno primijetili, SaltStack koristi Jinja predložak za generiranje dinamičkih konfiguracijskih datoteka. To pruža širok raspon mogućnosti unutar naših konfiguracijskih predložaka datoteka, kao što je pristup izvornom Python kodu ili postavljanje varijabli i slično. Sljedeći korak sastoji se od stvaranja predloška za našu virtualhosts.confdatoteku, dok prvo moramo stvoriti mapu:
mkdir -p /srv/salt/nginx/files
Nakon što je mapa stvorena, možemo nastaviti s pisanjem virtualhosts.jinjadatoteke:
{% for vhost in pillar['vhosts'] %}
server {
listen {{ vhost['listenPort'] }};
server_name {{ vhost['serverName'] }};
root {{ vhost['documentRoot'] }};
index {%- for index in vhost['indexFiles'] -%}{{ index }}{%- endfor -%};
location / {
try_files $uri $uri/ =404;
}
}
{% endfor %}
Stup
Nakon kreiranja formule, možemo nastaviti i postaviti našu bazu stupova:
mkdir -p /srv/pillar/
Sve reference za hostove koji odgovaraju određenoj datoteci stupa zapisuju se u top.slsdatoteku unutar direktorija koji smo upravo stvorili. U našem primjeru pretpostavljamo da postoje dva miniona s imenom hosta nginxwww1i nginxwww2dok ćemo im objema dodijeliti jedinstvene datoteke stupa:
base:
'id:nginxwww1':
- match: grain
- nginxwww1
'id:nginxwww2':
- match: grain
- nginxwww2
Zatim ćemo nastaviti s stvaranjem datoteke stupa za nginxwww1dok ćemo kreirati vhost koji sluša na portu 81 za domenu example.com, korijen dokumenta /var/www/example_com/i indeksne datoteke su index.shtml:
vhosts:
-
listenPort: '81'
serverName: 'example.com'
documentRoot: '/var/www/example_com'
indexFiles:
- index.shtml
Nastavit ćemo s stvaranjem datoteke stupa za nginxwww2dok ćemo kreirati vhost koji sluša na portu 82 za domenu example2.com, korijen dokumenta je /var/www/example2_com/i indeksne datoteke index.jsi index.css:
vhosts:
-
listenPort: '82'
serverName: 'example2.com'
documentRoot: '/var/www/example2_com'
indexFiles:
- index.js
- index.css
Napomena: Pillarne datoteke su pohranjene unutar/srv/pillar/
Raspoređivanje
Sada možemo dovršiti naš prvi pokušaj sa stupovima tako da ih ažuriramo na našim minionima:
salt '*' saltutil.refresh_pillar
Nakon toga možemo pokrenuti formulu SaltStack:
salt '*' state.sls nginx
Potvrđivanje
Nakon što je SaltStack formula je pokrenuti i dovršiti bez bilo kakve pogreške, mi bi trebao biti u mogućnosti vidjeti nginxsluša na portu 81na nginxwww1i na portu 82na nginxwww2kao potvrdu.
Zaključak
Ova prilično lagana, ali već moćna SaltStack formula može se dodatno proširiti kako bi se dodala podrška za HTTPS, eventualno s integracijom Let's Encrypt, podrškom za CGI ili PHP pozadinske programe i svime što možete učiniti i ručno. Ovaj vam je vodič trebao dati osnovnu ideju o SaltStack formulama i stupovima koji se koriste za implementaciju konfiguracijskih datoteka. Sretna automatizacija!