Követelmények
Mester beállítása
Képlet
Pillér
Telepítés
Megerősítés
Következtetés
Míg a SaltStack nagyszerű eszköz a műveletek egyidejű futtatására számos szerveren, támogatja az egyedi fájlban tárolt, gazdagépenként meghatározott konfigurációs előre beállított értékeket is, amelyeket "pillérnek" neveznek. Ebben az útmutatóban egy kis SaltStack képletet írunk az Nginx telepítéséhez és a virtuális gazdagépek telepítésének automatizálásához pillérek segítségével.
Követelmények
- Ubuntu 17.04-et futtató Vultr példány (fő)
- Két Vultr-példány, amelyen az Ubuntu 17.04 fut (minionok)
Mester beállítása
Ha még csak most kezdi, és még nem állította be a SaltStack mestert, tekintse meg ezt a cikket, amely elmagyarázza, hogyan kezdje el a SaltStack használatát.
Kezdjük a képletünk mappájának létrehozásával, amely tovább tárolja a SaltStack műveleteihez szükséges fájlokat a csatlósainkon.
mkdir -p /srv/salt/nginx
A mappa létrehozása után folytathatjuk a init.slsfájl írását, amely minden képlet elengedhetetlen része:
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
Amint azt valószínűleg észrevette, a SaltStack a Jinja sablonozó motort használja dinamikus konfigurációs fájlok generálásához. Ez a lehetőségek széles skáláját kínálja konfigurációs sablonfájljainkban, például a natív Python-kód elérését vagy a változók beállítását és hasonlókat. A következő lépés a virtualhosts.conffájlunk sablonjának létrehozása , míg először a mappát kell létrehoznunk:
mkdir -p /srv/salt/nginx/files
A mappa létrehozása után folytathatjuk a virtualhosts.jinjafájl írását :
{% 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 %}
Pillér
A képlet elkészítése után folytathatjuk a Pillar bázis beállítását:
mkdir -p /srv/pillar/
Az adott pillérfájlnak megfelelő gazdagépekre vonatkozó hivatkozások az top.slséppen létrehozott könyvtárban található fájlba kerülnek . Példánkban feltételezzük, hogy két minion létezik a gazdagépnévvel, nginxwww1és nginxwww2mindkettőhöz egyedi oszlopfájlt rendelünk hozzá:
base:
'id:nginxwww1':
- match: grain
- nginxwww1
'id:nginxwww2':
- match: grain
- nginxwww2
Ezután folytatjuk nginxwww1a pillérfájl létrehozását , míg a 81-es porton figyelő vhost-ot hozunk létre a tartományhoz example.com, ahol a dokumentum gyökér /var/www/example_com/és az indexfájlok index.shtml:
vhosts:
-
listenPort: '81'
serverName: 'example.com'
documentRoot: '/var/www/example_com'
indexFiles:
- index.shtml
Folytatjuk létre pillér fájlt nginxwww2mivel fogunk létrehozni vhost porton 82 domain example2.com, a dokumentum gyökér lenni /var/www/example2_com/, és az index fájlokat nem index.jsés index.css:
vhosts:
-
listenPort: '82'
serverName: 'example2.com'
documentRoot: '/var/www/example2_com'
indexFiles:
- index.js
- index.css
Megjegyzés: A Pillar fájlokat a rendszer tartalmazza/srv/pillar/
Telepítés
Most már befejezhetjük az első kísérletünket a pillérekkel, ha frissítjük azokat a csatlósainkon:
salt '*' saltutil.refresh_pillar
Ezután lefuttathatjuk a SaltStack képletet:
salt '*' state.sls nginx
Megerősítés
Miután a SaltStack formula már fut és befejezte hiba nélkül, akkor képesnek kell lennie arra, hogy nginxporton 81on nginxwww1és port 82a nginxwww2megerősítésként.
Következtetés
Ez a meglehetősen könnyű, de már erős SaltStack formula tovább bővíthető HTTPS-támogatás hozzáadásával, esetleg a Let's Encrypt integrációjával, a CGI vagy PHP háttérrendszerek támogatásával és mindazzal, amit manuálisan is megtehet. Ennek az útmutatónak egy alapötletet kellett volna adnia a konfigurációs fájlok telepítéséhez használt SaltStack képletekről és pillérekről. Boldog automatizálást!