Создание формул Salt
Salt – это открытый инструмент для управления конфигурацией и удаленного исполнения команд. Инструмент Salt достаточно простой в установке, масштабируемый (позволяет управлять десятками тысяч серверов) и довольно быстрый.
Примечание: Также рекомендуется ознакомиться с SaltStack и предыдущим руководством данной серии.
Весь код и все функции Salt распространяются согласно лицензии Apache 2.0 и могут быть загружены по этой ссылке при помощи менеджера пакетов вашей системы.
Данное руководство покажет, как создать формулу Salt, которая обеспечит сервер следующими программами:
- Vim
- Apache
- PHP
- git
Требования
Для выполнения руководства нужно:
- Предварительно установить Salt на Ubuntu 12.04.
- Запустить сессию root-пользователя.
Имейте в виду: в данном руководстве сервер словно называется minion01. Замените это условное имя именем своего сервера.
Создание формулы Salt
В предыдущем руководстве было показано, как использовать простые команды Salt для установки ПО (на примере Nginx). Так очень удобно выполнять узкоспециализированные команды, но постоянно работать с настройками и инфраструктурой таким образом не рекомендуется. Создавая так называемые формулы Salt (Salt Formulas), можно в точности многократно воспроизводить любую конфигурацию. Кроме того, наборы формул в результате можно рассматривать как документацию сервера.
Формулы Salt – это простые файлы yaml, которые по умолчанию хранятся на Salt Master в /srv/salt/.
Создайте формулу для установки Vim:
vi /srv/salt/vim.sls
Добавьте в файл следующий код:
vim:
pkg:
- installed
Рассмотрим его подробнее:
- Первая строка кода называется ID Declaration и предназначена для объявления идентификатора (имени) пакета; в данном случае это vim. Имя пакета, используемое в этой строке, должно совпадать с именем пакета, используемым менеджером пакетов системы; к примеру, в Ubuntu – vim, в CentOS – vim-core. На самом деле, в строке ID Declaration можно поместить абсолютно любой текст, так как имя пакета можно указать в следующей строке.
- Далее следует строка State Declaration, которая задаёт используемый режим Salt; в данном случае – pkg. Список доступных режимов можно найти по этой ссылке.
- Следующая строка, Function Declaration, задаёт имя функции внутри выполняемого модуля; в данном примере это installed. Режимы в Salt идемпотентны, то есть их можно выполнить неограниченное количество раз, но на сервере ничего не изменится, если он уж доведён до требуемого состояния.
Теперь попробуйте применить полученную формулу к серверу:
salt 'minion01' state.sls vim
Чтобы при этом другой текстовый редактор (например, nano) был удалён, файл vim.sls должен выглядеть так:
vim:
pkg:
- installed
nano:
pkg:
- removed
Как видите, всё работает согласно повторяющемуся шаблону.
Теперь попробуйте одновременно установить Apache и PHP. Создайте файл webserver.sls:
vi /srv/salt/webserver.sls
В этот файл вставьте код:
webserver_stuff:
pkg:
- installed
- pkgs:
- apache2
- php5
- php5-mysql
Обратите внимание на аргумент –pkgs; все элементы, перечисленные после этого аргумента, будут одновременно установлены в систему. Это позволяет одновременно устанавливать огромное количество пакетов.
Примените эту формулу:
salt 'minion01' state.sls webserver
Итак, теперь попробуйте установить git. Формула очевидна:
vi /srv/salt/git.sls
git:
pkg:
- installed
Примените эту формулу:
salt 'minion01' state.sls git
Чтобы запустить все полученные формулы одновременно, используйте:
salt 'minion01' state.sls vim,webserver,git
Данные highstate
Структура данных highstate позволяет Salt динамически определять формулы, которые должны быть применены к определённому minion серверу. Чтобы запустить этот режим, используйте:
salt 'minion01' state.highstate
Эта команда загрузит с Salt Master и выполнит на minion файл top. По умолчанию он находится в /srv/salt/top.sls. Базовый файл имеет такой вид:
base:
'*':
- vim
'minion*':
- git
- webserver
'minion02':
- mongodb
Этот файл top.sls настраивает окружение base, которое является стандартным. Когда minion работает с highstate, он запрашивает файл top.sls у master. Символ звёздочки запускает все перечисленные ниже формулы на всех minion (в данном примере только формулу для vim). Строки minion* и minion02 запустят нижеперечисленные формулы на заданных minion.
Примечание: Больше полезных инструкций по работе с minion можно найти здесь.
Заключение
К сожалению, данное руководство охватывает только основы работы с Salt и создание базовых формул.
Больше информации о Salt можно найти здесь.
Также читайте расширенную документацию Salt.
Разработка Salt – по этой ссылке.
Tags: salt, SaltStack
1 комментарий
спасибо за статью. но корявенько, salt в своей документации рекомендует использовать для пакетов -name, а не угадывать по ID