Принципы написания формулы

Формула — это набор файлов, которые хранятся в корне архива. Архив именуется согласно шаблону: <formula_name>-formula.tar.gz.

Формула включает файлы:

  • обязательные:

    • init.sls — главный файл с состояниями формулы; может включать в себя другие файлы с расширением .sls через директиву include;

    • clean.sls — файл отката состояний формулы;

    • pillar.example — файл с примером указания параметров формулы;

    • FORMULA — описание формулы в формате YAML;

  • не обязательные:

    • docs/README.RST — файл с описанием способов применения формулы и входящих в нее состояний;

    • any.sls — другие файлы с расширением .sls, содержащие состояния, которые включены в init.sls или clean.sls директивой include;

    • any_dir — другие подкаталоги, содержащие файлы с расширением .sls, которые включены в init.sls или clean.sls директивой include;

    • map.jinja — файл, который описывает особенности конфигурации под конкретную ОС или другие статические конфигурации.

Файл FORMULA включает атрибуты формулы:

  • name — имя формулы;

Значение поля name должно быть уникальным для всех формул, поскольку при их объединении в одну большую формулу дублирование значений может привести к проблемам с применением конфигураций.
  • os — ОС, поддерживающие формулу;

  • os_family — семейства ОС, поддерживающие формулу;

  • version — версия пакета с формулой, указанная в формате YYYYMM; если в месяце было несколько выпусков (release), то минорный месячный выпуск проставляется в атрибуте release;

  • release — выпуск версии; атрибут расширяет версионность формулы, если в месяце было несколько выпусков;

  • summary — краткое описание формулы;

  • description — подробное описание формулы.

SLS-файлы формулы составлены в синтаксисе YAML и содержат описания состояний, которые достигает система при применении формулы. Имена SLS-файлов, а также имена каталогов, не могут содержать точки, кроме точки между именем и расширением .sls. Могут включать строчные прописные латинские символы, цифры от 0 до 9, символ - (минус) и символ _ (подчеркивание) и соотвтетствовать маске [a-zA-z0-9-_]+.

Каждому состоянию присваивается уникальный идентификатор в рамках продукта.

Безопасное хранение и передача конфиденциальных данных с помощью pillar-файлов

Для безопасного хранения и передачи конфиденциальных данных, таких как пароли и ключи, рекомендуется использовать pillar-файлы. Они содержат зашифрованную информацию, специфичную для каждого агента (minion), что обеспечивает защиту данных при передаче (подробную информацию см. в официальной документации).

В pillar-файле задайте значения конфиденциальных данных (логина и пароля) при создании версии конфигурации в пользовательском интерфейсе «Кабинет администратора».

Пример:

{
   "lookup":{
      "user": "user123",
      "password": "password"
   }
}

Чтобы пароли не попали в логи и результаты исполнения команд, передайте их в исполняемые скрипты как значение атрибута args.

Пример запуска скрипта:

run_script:
  cmd.script:
    - name: salt://{{slspath}}/files/error.sh
    - args: "-u {{ error_params.user }} -p {{ error_params.password }}"