Requisits
Configuració del mestre
Fórmula
Pilar
Desplegant
Confirmant
Conclusió
Tot i que SaltStack és una eina fantàstica per executar operacions en molts servidors simultàniament, també admet els valors predefinits de configuració definits per host emmagatzemats en un fitxer únic que s'anomenen "pilar". En aquesta guia, escriurem una petita fórmula de SaltStack per instal·lar Nginx i automatitzar el desplegament d'amfitrions virtuals mitjançant pilars.
Requisits
- Instància Vultr amb Ubuntu 17.04 (master)
- Dues instàncies de Vultr amb Ubuntu 17.04 (minions)
Configuració del mestre
Si tot just esteu començant i encara no heu configurat el vostre mestre SaltStack, consulteu aquest article que explica com començar amb SaltStack.
Comencem per crear la carpeta per a la nostra fórmula que conté els fitxers necessaris per a les operacions de SaltStack als nostres minions.
mkdir -p /srv/salt/nginx
Després de crear la carpeta, podem continuar escrivint el init.slsfitxer que és una part essencial de cada fórmula:
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
Com probablement heu notat, SaltStack utilitza el motor de plantilles Jinja per generar fitxers de configuració dinàmics. Això ofereix una àmplia gamma de possibilitats als nostres fitxers de plantilla de configuració, com ara accedir al codi natiu de Python o configurar variables i similars. El següent pas consisteix a crear la plantilla per al nostre virtualhosts.conffitxer, mentre que primer hem de crear la carpeta:
mkdir -p /srv/salt/nginx/files
Un cop creada la carpeta, podem continuar escrivint el virtualhosts.jinjafitxer:
{% 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 %}
Pilar
Després de crear la fórmula, podem continuar i configurar la nostra base de pilars:
mkdir -p /srv/pillar/
Qualsevol referència d'amfitrions que coincideixi amb un fitxer pilar concret s'escriu al top.slsfitxer dins del directori que acabem de crear. En el nostre exemple, suposem que existeixen dos minions amb el nom d'amfitrió nginxwww1i, nginxwww2mentre que els assignarem tots dos fitxers de pilar únics:
base:
'id:nginxwww1':
- match: grain
- nginxwww1
'id:nginxwww2':
- match: grain
- nginxwww2
A continuació, continuarem amb la creació d'un fitxer pilar, nginxwww1mentre que crearem un vhost que escolta el port 81 per al domini example.com, sent l'arrel del document /var/www/example_com/i els fitxers d'índex index.shtml:
vhosts:
-
listenPort: '81'
serverName: 'example.com'
documentRoot: '/var/www/example_com'
indexFiles:
- index.shtml
Continuarem amb la creació d'un fitxer pilar, nginxwww2mentre que crearem un vhost que escolti al port 82 per al domini example2.com, sent l'arrel del document /var/www/example2_com/i els fitxers d'índex index.jsi index.css:
vhosts:
-
listenPort: '82'
serverName: 'example2.com'
documentRoot: '/var/www/example2_com'
indexFiles:
- index.js
- index.css
Nota: els fitxers Pillar s'emmagatzemen dins/srv/pillar/
Desplegant
Ara podem completar el nostre primer intent amb pilars actualitzant-los als nostres minions:
salt '*' saltutil.refresh_pillar
Després, podem executar la fórmula de SaltStack:
salt '*' state.sls nginx
Confirmant
Un cop s'ha executat la fórmula SaltStack i s'ha completat sense cap error, hauríem de poder veure l' nginxescolta al port 81activat nginxwww1i al port 82activat nginxwww2com a confirmació.
Conclusió
Aquesta fórmula de SaltStack bastant lleugera però ja potent es pot ampliar encara més per afegir suport per a HTTPS, possiblement amb una integració de Let's Encrypt, suport per a backends CGI o PHP i tot el que també podeu fer manualment. Aquesta guia hauria d'haver-vos donat una idea bàsica de les fórmules i els pilars de SaltStack utilitzats per al desplegament dels fitxers de configuració. Feliç automatització!