Устаревшее слияние hash_behavior в ansible 2.13

У нас есть много файлов group_vars/webserver/*.yml, которые структурированы, как показано ниже.

Без hash_behaviour = merge эти сайты больше не объединяются, и чистая настройка нескольких виртуальных хостов больше невозможна.

Что вы предлагаете, чтобы решить эту проблему?

Project1.yml

sites:
  project1:
    enable: true
    pool:
      version: php7.4

    server_name: project1.de.dev.local

    vhost_ssl:
      document_root: /home/www/project1/www/

Project2.yml

sites:
  project2:
    enable: true
    pool:
      version: php7.4

    server_name: project2.de.dev.local

    vhost_ssl:
      document_root: /home/www/project2/www/

... просто для справки Ansible Issue #73089 - Задокументируйте решение об устаревании hash_behaviour=merge и рекомендуемую замену.

U880D 03.02.2023 14:04
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
2
1
1 093
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я удалил hash_behaviour = merge в ansible.cfg и добавил задачу set_fact, которая объединяет сайты.

Task.yml

    - set_fact:
        sites: >-
          {%- set result = {} -%}
          {%- for key, value in vars.items() -%}
          {%- if 'site_' in key -%}
          {{ result.__setitem__(key|replace('site_', ''), value) }}
          {%- endif -%}
          {%- endfor -%}
          {{ result }}

Project1.yml

site_project1:
    enable: true
    pool:
      version: php7.4

    server_name: project1.de.dev.local

    vhost_ssl:
      document_root: /home/www/project1/www/

Project2.yml

site_project2:
    enable: true
    pool:
      version: php7.4

    server_name: project2.de.dev.local

    vhost_ssl:
      document_root: /home/www/project2/www/

Другие вопросы по теме