#ansible
#ansible
Вопрос:
Я написал playbook / роли для создания списка виртуальных хостов на веб-сервере.
У меня есть большой dict, описывающий все сайты. Это нелегко поддерживать, и я хотел бы определить каждый виртуальный хост в отдельном файле vars и выполнить цикл для этих файлов. Но я действительно не знаю, как это сделать.
Вот мой фактический код:
- name: "Create domain configuration"
include_role:
name: webserver/domain
loop: "{{ list_domains | dict2items }}"
loop_control:
loop_var: domain
С определением dict :
list_domains:
domain1:
server_name: "domain1.com"
server_alias:
- "domain1.fr"
certificate:
method: "webroot"
php_custom_values:
memory_limit: "128M"
database:
type: "mysql"
cms:
type: "prestashop"
domain2:
server_name: domain2.com
php_custom_values:
memory_limit: "512M"
Цель состоит в том, чтобы иметь каталог с domain1.yml и domain2.yml с определениями доменов
Ответ №1:
Используйте host_vars
каталог, создающий файл с именем каждого из ваших хостов.
Пример:
Каталог
host_vars/
- domain1.com
- domain2.comq
your_playbook.yml
roles/
- role1/
......
domain1.com
файл:
server_name: "domain1.com"
server_alias:
- "domain1.fr"
certificate:
method: "webroot"
php_custom_values:
memory_limit: "128M"
database:
type: "mysql"
cms:
type: "prestashop"
domain2.com
файл:
server_name: domain2.com
php_custom_values:
memory_limit: "512M"
У каждого хоста есть свои собственные переменные, затем измените свой сценарий, как показано ниже
- hosts: domain1.com, domain2.com
tasks:
- name: "Create domain configuration"
include_role:
name: webserver/domain
Комментарии:
1. Это интересный метод, мне пришлось бы редактировать инвентарь и плейбук при добавлении нового сайта / домена
2. На самом деле я не понимаю, как заставить это работать. У меня много хост-серверов, на каждом из которых размещено много доменов. Как можно развернуть весь домен на одном хосте? @gary-lopez
3. любой совет по полной реализации @gary?
4. Я нашел, как играть с инвентарем для моей цели, спасибо.