SaltStack - Управление конфигурацией
Управление конфигурацией - одна из наиболее важных концепций SaltStack. Он используется для создания многоразового шаблона конфигурации, называемогоstate. Состояние описывает все, что требуется для перевода системного компонента или приложения в известную конфигурацию.
Состояние соли
Солевое состояние - это многократно используемая конфигурация для определенной части системы. Состояния легче понять и описать с помощью простого YAML.
Создать состояние соли
Солевые состояния создать легко. Давайте создадим простое состояние в этой главе. Перейдите в каталог «salt-vagrant-demo / saltstack / 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. Если он работает правильно, вы можете увидеть ответ, как показано ниже.
Это приведет к следующему output -
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 file работать вместе, чтобы создать ядро возможностей управления конфигурацией SaltStack.
Давайте теперь создадим простой файл top.sls в каталоге saltstack/salt и добавьте следующее.
top.sls
base:
'*':
- common
'minion1':
- samples
Здесь state, обычно applies к all system штат, samples относится к minion1.
Затем запустите мастер соли и примените состояние, как показано ниже.
root@saltmaster:/home/vagrant# salt '*' state.apply
Это приведет к следующему output -
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
Это приведет к следующему output -
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», используя функцию состояния Salt.
Создать и применить функцию состояния
Создайте файл с именем «sample.sls» в каталоге «salt-vagrant-demo / saltstack / salt / sample.sls» и добавьте следующее:
sample.sls
install vim:
pkg.installed:
- name: vim
После того, как среда Vagrant будет запущена, запустите мастер соли и примените sample.sls, выполнив следующую команду.
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample
Это приведет к следующему output -
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». Давайте теперь протестируем пакет, используя метод тестирования соли.
Проверка состояния соли
Для выполнения тестового прогона необходимо добавить в состояния параметр «test = True». Информация о возврате покажет состояния, которые будут применены желтым, а результат будет отмечен как «Нет».
Следующая команда используется для проверки состояния -
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True
Это приведет к следующему output -
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 - важный компонент, позволяющий повторно использовать состояния Salt. Он используется для определения защищенных данных для миньонов, назначенных с помощью целей. В данных соляного столба хранятся такие значения, как порты, пути к файлам, параметры конфигурации и пароли.
Файл конфигурации 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
Это приведет к следующему output -
minion2:
- apache
- git
minion1:
- apache
- git
Предметы столба
После того, как столп настроен, данные о миньоне можно будет просмотреть через модуль столба. Доступ к нему можно получить через функциюpillar.items, который определен ниже.
root@saltmaster:/home/vagrant# salt '*' pillar.items
Это приведет к следующему output -
minion2:
----------
apache:
httpd
git:
git
minion1:
----------
apache:
httpd
git:
git
SaltStack - включить компонент
Компонент «Включить» используется для определения одной и той же задачи конфигурации в нескольких местах. Выполнить легко. Вверху файла состояния добавьте включение в следующем формате:
include:
- state file 1
- state file 2
Вот, state file 1 и state file 2- это имена файлов SLS, которые вы хотите включить. Нет необходимости включать.slsрасширение. Включенные состояния соли вставляются в начало текущего файла.
Файл состояния в подкаталоге
Вы можете включить файл состояния подкаталога, используя точку (.). Он действует как разделитель каталогов.
include:
- dir.sls1
Интерфейс зерна
Grains - это интерфейс, используемый для получения информации о базовой системе. Собираются зерна для операционной системы, доменного имени, IP-адреса, ядра, типа ОС, памяти и многих других свойств системы.
Ориентация на зерно
Данные зерна можно использовать при нацеливании на миньонов, что определено в следующем блоке кода.
root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping
Это приведет к следующему output -
minion1:
True
minion2:
True
Перечисление зерен
Зерна можно перечислить с помощью модуля grains.ls, который определен ниже.
root@saltmaster:/home/vagrant# salt '*' grains.ls
Элементы списка
Как и Pillar, данные Grains также можно перечислить с помощью файла «grains.items».
root@saltmaster:/home/vagrant# salt '*' grains.items