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