Ansible: цикл для включенных файлов

#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. Я нашел, как играть с инвентарем для моей цели, спасибо.