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 и установить необходимое программное обеспечение с минимальными усилиями и максимальной гибкостью.