Учебники

SaltStack — Управление конфигурацией

Управление конфигурацией является одним из наиболее важных понятий в 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».