SaltStack - Exemplo de Trabalho

Neste exemplo de trabalho, criaremos uma fórmula Salt que configurará o servidor da web apache junto com o software PHP. Salt é uma ótima maneira de executar comandos ad-hoc, mas você não gostaria de configurar continuamente sua infraestrutura dessa maneira. Ao criar um conjunto de fórmulas Salt, você pode reproduzir com segurança qualquer configuração.

Salt Formulas são arquivos de texto YAML simples e, por padrão, residem em seu Salt Master em /srv/salt/*. Vamos começar criando uma fórmula de sal para instalar o servidor web Apache e o PHP ao mesmo tempo.

Crie um arquivo chamado “websetup.sls” em /srv/salt/ diretório e adicione o seguinte código.

websetup.sls

websetup:
   pkg:
      - installed
      - pkgs:
         - apache2
         - php5
         - php5-mysql

Neste exemplo, observe o argumento “- pkgs:”. Cada item na lista abaixo “- pkgs:” será passado junto ao gerenciador de pacotes do SO para serem instalados juntos. Sempre que você tiver uma grande lista de pacotes para instalar, esta é a maneira mais eficiente de instalá-los.

Aplique esta fórmula ao mestre de sal usando o seguinte comando.

root@saltmaster:/home/vagrant# salt 'minion2' state.sls websetup

Agora, você verá o seguinte 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

Agora, você instalou os pacotes em minion2.

Highstate

Um “estado elevado” é uma maneira de Salt determinar qual das fórmulas do sal deve ser aplicada a um determinado lacaio. Execute um “highstate” usando o seguinte comando.

root@saltmaster:/home/vagrant# salt <targets> state.highstate

top.sls

Quando o lacaio pede para executar um estado elevado, como mencionado antes, o lacaio solicita o top.sls do mestre de Sal e procura por fórmulas que correspondam. Por padrão, este arquivo está localizado em /srv/salt/top.sls. Vamos adicionar nossa fórmula ao arquivo top.sls e definir minion2 como destino.

base:
   '*':
      - common
   'minion2’:
      - websetup

Agora, execute o highstate visando minion2 como mostrado abaixo.

root@saltmaster:/home/vagrant# salt 'minion2' state.highstate

Depois de aplicar isso, você poderá ver o seguinte 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

Agora, o servidor web Apache e o PHP estão instalados no minion2. Desta forma, temos que mirar lacaios usando ambostop.sls e highstate e instale o software necessário com trabalho mínimo e flexibilidade máxima.