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.