Управление конфигурацией является одним из наиболее важных понятий в SaltStack. Он используется для создания повторно используемого шаблона конфигурации, называемого состоянием . Состояние описывает все, что требуется для помещения системного компонента или приложения в известную конфигурацию.
Солт-Стейт
Соленое состояние — это многоразовая конфигурация для определенной части системы. Состояния легче понять и описать с помощью простого YAML.
Создать соляное состояние
Солевые состояния легко создавать. Давайте создадим простое состояние в этой главе. Перейдите в каталог salt-vagrant-demo / salttack / salt /, создайте файл samples.sls и добавьте в него следующие строки.
samples.sls
install_network_packages: pkg.installed: - pkgs: - rsync - lftp - curl
Теперь сохраните файл и выполните следующую команду в мастере соли.
root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples
Здесь мы установили rsync, lftp и curl через модуль pkg.installed, используя состояние Salt в соляном миньоне minion1 . Если он работает правильно, вы можете увидеть ответ, как показано ниже.
Это даст следующий результат —
minion1: ---------- ID: install_network_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 08:08:48.612336 Duration: 545.385 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 545.385 ms
Применить состояние соли
Теперь, когда мы создали состояние с помощью файла .sls и применили его, специально вызвав его. У Salt есть файл состояния по умолчанию, который называется top.sls . Верхний файл используется для применения нескольких файлов состояния к миньонам Salt. Верхний файл описывает, где должны применяться состояния. Итак, файлы States и Top работают вместе, чтобы создать ядро возможностей управления конфигурацией SaltStack.
Теперь давайте создадим простой файл top.sls в каталоге salttack / salt и добавим следующее.
top.sls
base: '*': - common 'minion1': - samples
Здесь состояние , как правило, применяется ко всем системным состояниям, примеры применяются к minion1 .
Затем запустите мастер соли и примените состояние, как показано ниже.
root@saltmaster:/home/vagrant# salt '*' state.apply
Это даст следующий результат —
minion1: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:33:35.642355 Duration: 588.21 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 588.210 ms minion2: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:33:35.890331 Duration: 602.79 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 602.790 ms
Применить размер партии
Если у вас есть большое количество подключенных миньонов, вы можете ограничить количество обновляемых систем одновременно. Это выполняется с помощью опции –batch-size , которая определена ниже.
root@saltmaster:/home/vagrant# salt --batch-size 5 '*' state.apply
Это даст следующий результат —
Executing run on ['minion2', 'minion1'] jid: 20170314094638482664 minion1: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:46:41.228519 Duration: 582.24 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 582.240 ms retcode: 0 jid: 20170314094638482664 minion2: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:46:41.153609 Duration: 605.235 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 605.235 ms retcode: 0
Функции солевого состояния
Функции состояния соли используются для установки и настройки приложений в удаленной системе. Давайте установим пакет «Vim», используя функцию состояния соли.
Создать и применить функцию состояния
Создайте файл с именем «sample.sls» в каталоге «salt-vagrant-demo / salttack / salt / sample.sls» и добавьте следующее:
sample.sls
install vim: pkg.installed: - name: vim
После запуска среды Vagrant запустите мастер соли и примените sample.sls, выполнив следующую команду.
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample
Это даст следующий результат —
minion2: ---------- ID: install vim Function: pkg.installed Name: vim Result: True Comment: Package vim is installed Started: 15:07:45.752764 Duration: 553.506 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 553.506 ms
Теперь мы добавили пакет «Vim». Теперь давайте проверим пакет, используя метод тестирования Salt.
Соль Государственное Тестирование
Выполнение теста выполняется путем добавления опции «test = True» к состояниям. Информация о возвращении покажет состояния, которые будут применены желтым цветом, а результат будет отображен как «Нет».
Следующая команда используется для проверки состояния —
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True
Это даст следующий результат —
minion2: ---------- ID: install vim Function: pkg.installed Name: vim Result: True Comment: Package vim is already installed Started: 15:07:45.752764 Duration: 553.506 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 553.506 ms
SaltStack ─ Компонент столба
Столп является важным компонентом для повторного использования соляных состояний. Он используется для определения защищенных данных для миньонов, назначенных с использованием целей. Данные соляного столба хранят такие значения, как порты, пути к файлам, параметры конфигурации и пароли.
Конфигурационный файл Pillar
Конфигурация для pillar_roots в главном конфигурационном файле показана ниже —
pillar_roots: base: - /srv/pillar
Здесь файл находится в каталоге «/ srv / pillar».
Учтите, что верхний файл, расположенный в /srv/pillar/top.sls, имеет следующую структуру:
base: '*': - default
Теперь перейдите к файлу default.sls, расположенному в /srv/pillar/default.sls, и добавьте следующий код.
# Default pillar values apache git
После сохранения файла обновите столб, чтобы обновить все изменения.
Освежающий столб
Вы можете обновить столб, используя следующую команду.
root@saltmaster:/home/vagrant# salt '*' saltutil.refresh_pillar
Приведенная выше команда используется для обновления данных соляного столба по всем миньонам.
Список основных данных
Чтобы перечислить данные столба, вы можете использовать команду, приведенную ниже.
root@saltmaster:/home/vagrant# salt '*' pillar.ls
Это даст следующий результат —
minion2: - apache - git minion1: - apache - git
Элементы столба
После того, как столп настроен, данные можно просмотреть на миньоне через модуль столба. Доступ к нему можно получить через функцию pillar.items , которая определена ниже.
root@saltmaster:/home/vagrant# salt '*' pillar.items
Это даст следующий результат —
minion2: ---------- apache: httpd git: git minion1: ---------- apache: httpd git: git
SaltStack — включить компонент
Компонент «Включить» используется для определения одной и той же задачи конфигурации в нескольких местах. Это легко выполнить. В верхней части файла состояния добавьте включение в следующем формате:
include: - state file 1 - state file 2
Здесь файл состояния 1 и файл состояния 2 — это имена файлов SLS, которые вы хотите включить. Не нужно включать расширение .sls . Состояния включенной соли вставляются вверху текущего файла.
Файл состояния в подкаталоге
Вы можете включить файл состояния подкаталога, используя точку (.). Он действует как разделитель каталогов.
include: - dir.sls1
Зерновой интерфейс
Зерна — это интерфейс, используемый для получения информации о базовой системе. Зерна собираются для операционной системы, доменного имени, IP-адреса, ядра, типа ОС, памяти и многих других системных свойств.
Таргетинг по зерну
Данные о зерне можно использовать при нацеливании на миньонов, что определено в следующем блоке кода.
root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping
Это даст следующий результат —
minion1: True minion2: True
Листинг зерна
Зерновые могут быть перечислены с помощью модуля ‘grains.ls’, который определен ниже.
root@saltmaster:/home/vagrant# salt '*' grains.ls
Элементы списка
Как и в случае с Pillar, данные о зерновых также могут быть перечислены с помощью «grains.items».