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