Назад | Перейти на главную страницу

Как использовать saltstack для управления разными конфигурационными файлами для разных миньонов?

У меня есть два миньона с сервером httpd, управляемым под солеварой. VirtualHost на основе портов нужно настраивать их отдельно. Так /etc/httpd/conf.d/httpd-vhost.conf наблюдается так:

httpd:
  pkg.installed: []
  service.running:
    - require:
      - pkg: httpd
    - watch:
      - file: /etc/httpd/conf.d/httpd-vhosts.conf

/etc/httpd/conf.d/httpd-vhosts.conf:
  file.managed:
    - source: salt://webserver/httpd-vhosts.conf

Проблема в том, что у двух миньонов есть собственное имя сервера и httpd-vhost.conf должно быть иначе как ServerName www.example1.com и www.example2.com. Солонина grains модуль просто работает для файла .sls, а не для управляемого файла. Так что есть совет, как заставить его работать?

Просто добавь - template: jinja на ваш file.managed и вы можете использовать зерна в файлах конфигурации.

/etc/httpd/conf.d/httpd-vhosts.conf:
  file.managed:
    - source: salt://webserver/httpd-vhosts.conf
    - template: jinja

Вы можете использовать зерна в исходном файле следующим образом:

{% if grains['id'] == 'dev' -%}
ServerName dev.example.com
{% else %}
ServerName example.com
{% endif -%}

Именно эта функция меня продала на SaltStack.

Вы можете создавать файлы состояния для каждого сервера, где единственное отличие - это исходная строка. Конечно, у каждого источника есть правильная конфигурация. Затем в top.sls вы указываете правильный файл состояния для каждого веб-сервера.