SaltStack - Рабочий пример

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

Формулы соли - это простые текстовые файлы 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

Теперь вы увидите следующее 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

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

Highstate

«HighState» - это способ, с помощью которого Соль определяет, какая из формул соли должна применяться к определенному миньону. Выполните «высокое состояние», используя следующую команду.

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

top.sls

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

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

Теперь выполните highstate нацелившись на миньона 2, как показано ниже.

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

После применения вы могли увидеть следующее 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

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