SaltStack - Ejemplo de trabajo
En este ejemplo de trabajo, crearemos una fórmula de Salt que configurará el servidor web apache junto con el software PHP. Salt es una excelente manera de ejecutar comandos ad-hoc, pero realmente no querrá configurar continuamente su infraestructura de esta manera. Al crear un conjunto de fórmulas de Salt, puede reproducir de manera confiable cualquier configuración.
Salt Formulas son archivos de texto YAML simples y, por defecto, residen en su Salt Master en /srv/salt/*. Comencemos por crear una fórmula Salt para instalar el servidor web Apache y PHP al mismo tiempo.
Cree un archivo llamado "websetup.sls" en /srv/salt/ directorio y agregue el siguiente código.
websetup.sls
websetup:
pkg:
- installed
- pkgs:
- apache2
- php5
- php5-mysql
En este ejemplo, observe el argumento "- pkgs:". Cada elemento de la lista a continuación "- pkgs:" se pasará junto al administrador de paquetes del sistema operativo para instalarlos juntos. Siempre que tenga una gran lista de paquetes para instalar, esta es la forma más eficiente de instalarlos.
Aplique esta fórmula a Salt master usando el siguiente comando.
root@saltmaster:/home/vagrant# salt 'minion2' state.sls websetup
Ahora, verá lo siguiente output -
minion2:
----------
ID: websetup
Function: pkg.installed
Result: True
Comment: 3 targeted packages were installed/updated.
Started: 01:50:53.978396
Duration: 86738.132 ms
Changes:
----------
apache2:
----------
new:
2.4.7-1ubuntu4.13
old:
apache2-api-20120211:
----------
new:
1
old:
apache2-bin:
----------
new:
2.4.7-1ubuntu4.13
old:
apache2-data:
----------
new:
2.4.7-1ubuntu4.13
old:
libapache2-mod-php5:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
libapr1:
----------
new:
1.5.0-1
old:
libaprutil1:
----------
new:
1.5.3-1
old:
libaprutil1-dbd-sqlite3:
----------
new:
1.5.3-1
old:
libaprutil1-ldap:
----------
new:
1.5.3-1
old:
php5:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-cli:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-common:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-json:
----------
new:
1.3.2-2build1
old:
php5-mhash:
----------
new:
1
old:
php5-mysql:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-readline:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
phpapi-20121212:
----------
new:
1
old:
ssl-cert:
----------
new:
1.0.33
old:
Summary for minion2
------------
Succeeded: 1 (changed = 1)
Failed: 0
------------
Total states run: 1
Total run time: 86.738 s
Ahora, ha instalado los paquetes en minion2.
Highstate
Un "alto estado" es una forma de Salt para determinar cuál de las fórmulas de Salt debe aplicarse a un determinado minion. Ejecute un "highstate" usando el siguiente comando.
root@saltmaster:/home/vagrant# salt <targets> state.highstate
top.sls
Cuando el minion solicita ejecutar un estado alto, como se mencionó anteriormente, el minion solicita el top.sls del maestro de Salt y busca fórmulas que coincidan. De forma predeterminada, este archivo se encuentra en /srv/salt/top.sls. Agreguemos nuestra fórmula al archivo top.sls y establezcamos minion2 como objetivo.
base:
'*':
- common
'minion2’:
- websetup
Ahora, ejecute el highstate apuntando a minion2 como se muestra a continuación.
root@saltmaster:/home/vagrant# salt 'minion2' state.highstate
Después de aplicar esto, podría ver lo siguiente output -
minion2:
----------
ID: common_packages
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 01:55:17.998824
Duration: 461.615 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 461.615 ms
Ahora, el servidor web Apache y PHP están instalados en minion2. De esta manera, tenemos que apuntar a los súbditos usando ambostop.sls y highstate e instale el software necesario con un trabajo mínimo y la máxima flexibilidad.