У нас есть много файлов 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/
Я удалил 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/
... просто для справки Ansible Issue #73089 - Задокументируйте решение об устаревании hash_behaviour=merge и рекомендуемую замену.