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