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

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


service:ansible

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:ansible [16.08.2025 05:32] – [Шаблон-цикл для составления конфигурационного файла из нескольких однотипных секций] viacheslavservice:ansible [26.08.2025 17:47] (текущий) – [Выбор каталога шаблона в зависимости от группы хоста] viacheslav
Строка 1203: Строка 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/playbook_guide/playbooks_loops.html#extended-loop-variables|Extended loop variables]]\\
 [[https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html|Special 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.1755322350.txt.gz · Последнее изменение: viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki