Учебники

SaltStack — рабочий пример

В этом рабочем примере мы создадим формулу Salt, которая настроит веб-сервер apache вместе с программным обеспечением PHP. Salt — отличный способ выполнять специальные команды, но вам не нужно постоянно настраивать свою инфраструктуру таким образом. Создав набор формул Соли, вы можете надежно воспроизвести любую конфигурацию поверх.

Salt Formulas — это простые текстовые файлы YAML, которые по умолчанию хранятся в Salt Master в / srv / salt / * . Давайте начнем с создания формулы соли для установки веб-сервера Apache и PHP одновременно.

Создайте файл с именем «websetup.sls» в каталоге / srv / salt / и добавьте следующий код.

websetup.sls

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

В этом примере обратите внимание на аргумент «- pkgs:». Каждый элемент в списке ниже «- pkgs:» будет передаваться вместе в менеджер пакетов ОС для совместной установки. Когда у вас есть большой список пакетов для установки, это самый эффективный способ их установки.

Примените эту формулу к мастеру соли, используя следующую команду.

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

Теперь вы увидите следующий вывод

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

Теперь вы установили пакеты в minion2 .

Highstate

«Highstate» — это способ для Соли определить, какую из формул соли следует применять к определенному миньону. Выполните «highstate», используя следующую команду.

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

top.sls

Когда миньон запрашивает выполнение highstate, как упоминалось ранее, миньон запрашивает top.sls от мастера соли и ищет формулы, которые ему соответствуют. По умолчанию этот файл находится по адресу /srv/salt/top.sls. Давайте добавим нашу формулу в файл top.sls и установим minion2 в качестве цели.

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

Теперь выполните высокоуровневый таргетинг minion2, как показано ниже.

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

После применения вы можете увидеть следующий вывод

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

Теперь веб-сервер Apache и PHP установлены в minion2. Таким образом, мы должны нацелить миньонов, используя как top.sls, так и highstate, и установить необходимое программное обеспечение с минимальной работой и максимальной гибкостью.