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

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


service:ansible

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:ansible [18.08.2025 04:08] – [Шаблон-цикл для составления конфигурационного файла из нескольких однотипных секций] viacheslavservice:ansible [26.08.2025 17:47] (текущий) – [Выбор каталога шаблона в зависимости от группы хоста] viacheslav
Строка 1210: Строка 1210:
 Включение возможности для непривилегированного пользователя запускать демоны systemd, которые работают после выхода пользователя из своего сеанса. Включение возможности для непривилегированного пользователя запускать демоны systemd, которые работают после выхода пользователя из своего сеанса.
 <code yaml> <code yaml>
-- name: Ensure lingering enabled +- name: Ensure lingering enabled for user {{ deploy_user }} 
-   command: "loginctl enable-linger {{ deploy_user }}" +  command:  
-     creates: /var/lib/systemd/linger/{{ deploy_user }}+    cmd: loginctl enable-linger {{ deploy_user }} 
 +    creates: /var/lib/systemd/linger/{{ deploy_user }}
 </code> </code>
 [[https://github.com/ansible/ansible/issues/72674#issuecomment-801200193]] [[https://github.com/ansible/ansible/issues/72674#issuecomment-801200193]]
Строка 1220: Строка 1221:
 ansible k3 -m command -a "loginctl enable-linger user creates=/var/lib/systemd/linger/user" ansible k3 -m command -a "loginctl enable-linger user creates=/var/lib/systemd/linger/user"
 </code> </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.1755490103.txt.gz · Последнее изменение: viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki