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