Инструменты пользователя

Инструменты сайта


service:ansible

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
service:ansible [25.08.2025 12:57] – [Lingering] viacheslavservice:ansible [26.08.2025 17:47] (текущий) – [Выбор каталога шаблона в зависимости от группы хоста] viacheslav
Строка 1245: Строка 1245:
 </code> </code>
 https://www.reddit.com/r/ansible/comments/ozopzi/list_hosts_in_group_and_filter/ https://www.reddit.com/r/ansible/comments/ozopzi/list_hosts_in_group_and_filter/
 +
 +===== Слияние переменных-словарей =====
 +По умолчанию, одноимённая дочерняя переменная полностью перезаписывает родительскую.
 +<code yaml>
 +# group_vars/all.yml
 +settings:
 +  user: "Vasya"
 +  group: "Managers"
 +  mood: "Angry"
 +  status: "Divorced"
 +  
 +# group_vars/k3.yml
 +settings:
 +  user: "Kolya"
 +  group: "Admins"
 +  mood: "Frustrated"
 +
 +# Результат
 +- debug:
 +    var: settings
 +
 +ok: [k3.workgroup] => {
 +    "settings": {
 +        "group": "Admins",
 +        "mood": "Frustrated",
 +        "user": "Kolya"
 +    }
 +}
 +</code>
 +
 +Чтобы дочерняя переменная дополняла родительскую, нужно переименовать переменные в файлах ''group_vars'' и применить фильтр ''combine()'' в плейбуке, чтобы собрать их вместе.
 +<code yaml>
 +# vars_test.yml
 +- hosts: k3
 +  remote_user: user
 +  roles:
 +    - role: vars_test
 +  vars:
 +    settings: "{{ settings_all | combine(settings_host, recursive=true) }}"
 +
 +# Результат
 +- debug:
 +    var: settings
 +    
 +ok: [k3.workgroup] => {
 +    "settings": {
 +        "group": "Admins",
 +        "mood": "Frustrated",
 +        "status": "Divorced",
 +        "user": "Kolya"
 +    }
 +}
 +</code>
 +Затем в шаблонах уже можно применять ''%%{{ settings.user }}%%'' и т. д.\\
 +:!: Параметр ''hash_behaviour=merge'', добавляемый в ''ansible.cfg'', считается устаревшим и нежелательным к применению.
 +
 +[[https://serverfault.com/questions/900414/how-to-merge-variables-of-type-hash-across-different-variable-files-in-ansible|How to merge variables of type hash across different variable files in ansible?]]\\
 +[[https://docs.ansible.com/ansible/latest/collections/ansible/builtin/combine_filter.html|ansible.builtin.combine filter – combine two dictionaries]]
 +
 ====== Ошибки, проблемы ====== ====== Ошибки, проблемы ======
  
service/ansible.1756126662.txt.gz · Последнее изменение: viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki