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

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


service:ansible

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:ansible [16.08.2025 03:53] – [Шаблон-цикл для составления конфигурационного файла из нескольких однотипных секций] viacheslavservice:ansible [26.08.2025 17:47] (текущий) – [Выбор каталога шаблона в зависимости от группы хоста] viacheslav
Строка 1149: Строка 1149:
  
 ===== Шаблон-цикл для составления конфигурационного файла из нескольких однотипных секций ===== ===== Шаблон-цикл для составления конфигурационного файла из нескольких однотипных секций =====
-Здесь секция пишется, если хост входит в группу, совпадающую с ''alias'' в списке ''queues''+Здесь секция пишется, если хост входит в группу, совпадающую с ''alias'' в списке ''queues''. Можно сделать по любому другому условию.\\ 
-<file xml queue-settings.xml.j2>+Если не подходит ''alias'', можно добавить в каждый пункт списка переменных ещё один параметр, например, ''tag: my_group'' и ориентироваться на него
 +<file xml templates/queue-settings.xml.j2>
 <?xml version="1.0" encoding="windows-1251"?> <?xml version="1.0" encoding="windows-1251"?>
 <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
 <properties> <properties>
  
-{% for q in queues if q.alias in group_names  %}+{% for q in queues if q.alias in group_names %}
 <entry key="queue-{{ loop.index0 }}.alias">{{ q.alias }}</entry> <entry key="queue-{{ loop.index0 }}.alias">{{ q.alias }}</entry>
 <entry key="queue-{{ loop.index0 }}.cft-cache-mode">{{ q.cache_mode }}</entry> <entry key="queue-{{ loop.index0 }}.cft-cache-mode">{{ q.cache_mode }}</entry>
Строка 1202: Строка 1203:
  
 [[https://www.youtube.com/watch?v=lUBPAGI9W6U|Ansible for Network Configuration Templates]] ([[https://github.com/dmahler/ansible-template/tree/master|Github]])\\ [[https://www.youtube.com/watch?v=lUBPAGI9W6U|Ansible for Network Configuration Templates]] ([[https://github.com/dmahler/ansible-template/tree/master|Github]])\\
-[[http://onreader.mdl.ru/MasteringAnsible.3ed/content/Ch05.html|Глава 5. Высвобождение всей мощи шаблонов Jinja2]] (James Freeman, Jesse Keating - Mastering Ansible, 3rd ed.)+[[http://onreader.mdl.ru/MasteringAnsible.3ed/content/Ch05.html|Глава 5. Высвобождение всей мощи шаблонов Jinja2]] (James Freeman, Jesse Keating - Mastering Ansible, 3rd ed.)\\ 
 +[[https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_loops.html#extended-loop-variables|Extended loop variables]]\\ 
 +[[https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html|Special Variables]] 
 + 
 +===== Lingering ===== 
 +Включение возможности для непривилегированного пользователя запускать демоны systemd, которые работают после выхода пользователя из своего сеанса. 
 +<code yaml> 
 +- name: Ensure lingering enabled for user {{ deploy_user }} 
 +  command:  
 +    cmd: loginctl enable-linger {{ deploy_user }} 
 +    creates: /var/lib/systemd/linger/{{ deploy_user }} 
 +</code> 
 +[[https://github.com/ansible/ansible/issues/72674#issuecomment-801200193]] 
 + 
 +Ad-hoc: 
 +<code bash> 
 +ansible k3 -m command -a "loginctl enable-linger user creates=/var/lib/systemd/linger/user" 
 +</code> 
 + 
 +===== Выбор каталога шаблона в зависимости от группы хоста ===== 
 +Здесь: группы ''rrr1copy'', ''test1'' и ''test2'' входят в группу ''queue_settings'' в inventory.\\ 
 +Для каждой группы создан свой ''queue-settings.xml.j2'' в соответствующем подкаталоге в templates. 
 +<code yaml> 
 +- name: Delete queue-settings.xml from unauthorized servers 
 +  file: 
 +    path: "{{ postgres_dir }}/queue-settings.xml" 
 +    state: absent 
 +  when: inventory_hostname not in groups["queue_settings"
 +  tags: 
 +  - postgres 
 + 
 +- name: Copy template queue-settings.xml 
 +  template: 
 +    src: "postgres/{{ group_names |select('match', 'rrr1copy|test[12]') |join() }}/queue-settings.xml.j2" 
 +    dest: "{{ postgres_dir }}/queue-settings.xml" 
 +    owner: "{{ deploy_user }}" 
 +    mode: 0660 
 +  when: inventory_hostname in groups["queue_settings"
 +  tags: 
 +  - postgres 
 +</code> 
 +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.1755316407.txt.gz · Последнее изменение: viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki