Включая переменные из нескольких файлов с одним и тем же шаблоном - PullRequest
0 голосов
/ 11 октября 2019

Я хочу создать файлы /etc/sudoers.d/ из того же шаблона, в роли Ansible, но в файлах, расположенных по другому пути (независимо от роли, из-за хранилища Git -> Я хочу, чтобы роли былинезависимый). У меня уже есть один шаблон для / etc / sudoers (основной файл), который работает, и я хочу: - дополнить эту роль некоторыми дополнительными переменными в папке /etc/sudoers.d/, в отдельном файле - чтобы иметь возможность такжев будущем вызовите эту роль для добавления файлов в /etc/sudoers.d/ с тем же шаблоном.

Сначала я поместил все переменные в один и тот же файл, но, очевидно, я сгенерировал 3 раза один и тот же файл,со всеми переменными внутри: /

В задачах:

name: "Creating Sub sudoers files in {{ sudo_sudoers_d_path }}"
template:
  src: "idc_sudo.d.j2"
  dest: "{{ sudo_sudoers_d_path }}/{{ item.filename }}"
  validate: "visudo -cf %s"
  owner: "{{ sudo_sudoers_user }}"
  group: "{{ sudo_sudoers_group }}"
  mode: "{{ sudo_sudoers_mode }}"
with_items: "{{ sudo_sub_files }}"
when: create_sudoers_subdir == true

В переменных с примером Zabbix:

filename: "idc_zabbix"
users:
  - name: "zabbix"
    nopasswd: yes
    commands:
    - /usr/bin/cksum /etc/sudoers

То, что я хотел бы видеть, было бы что-то вроде: - X количество переменных файлов с выделенными частями привилегий sudo - На внешних ролях (например, Zabbix) эти переменные установлены как vars

1 Ответ

0 голосов
/ 11 октября 2019

Возможно, вы захотите немного изменить свой цикл with_items:

name: "Creating Sub sudoers files in {{ sudo_sudoers_d_path }}"
template:
  src: "idc_sudo.d.j2"
  dest: "{{ item.file_path }}/{{ item.file_name }}"
  validate: "visudo -cf %s"
  owner: "{{ item.user_name}}"
  group: "{{ item.group }}"
  mode: "{{ item.mode }}"
with_items: 
    - { file_name: 'idc_zabbix', file_path: '/etc/sudoers', user_name: "zabbix", group: "some_group", mode: "0744" }
    - { file_name: 'idc_zabbix', file_path: '/etc/sudoers.d', user_name: "zabbix", group: "some_group", mode: "0744" }
when: create_sudoers_subdir == true

И вы можете использовать эти item.whith переменные внутри шаблона, если хотите. Если это не работает, потому что вы ДОЛЖНЫ хранить эти переменные где-то в другом месте, или у вас есть так много, что они просто ужасны, чтобы поместить их здесь, тогда вы могли бы также использовать вместо этого цикл with_dict:

- name: Print phone records
  debug:
    msg: "User {{ item.key }} is {{ item.value.name }} ({{ item.value.telephone }})"
  with_dict: "{{ users }}"

Тогда вы можетевызывать любой список с правильными метками из любого места, куда вы можете импортировать переменные (group_vars, host_vars, модуль var в playbook и т. д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...