Я хочу запустить задачу, в которой параметры заполняются с помощью with_items, вместо того, чтобы вручную писать parameter:{{item.key}}
. Например, у меня есть этот host var:
HtpasswdsToSet:
- path: /etc/nginx/passwdfile
name: janedoe
password: 'abc123'
- path: /etc/nginx/passwdfile
name: bob
password: '123abc'
Заметка что ключи списка словарей являются фактическими параметрами задачи htpasswd.
В playbook вместо этого:
- name: add htpasswd users
htpasswd:
path: {{item.path}}
name: {{item.name}}
password: '{{item.password}}'
with_items: "{{HtpasswdsToSet}}"
Есть ли способ просто сделать это?
- name: add htpasswd users
htpasswd: "{{HtpasswdsToSet}}"
Это действительно помогло бы мне уменьшить многословие playbook. Спасибо.
С Ansible 2.2 вы все еще можете использовать args
параметр для достижения этого.
Но он уже давно устарел и отобразит вам предупреждение.
Некоторые подробности насчет устаревания.
Пример:
- hosts: localhost
gather_facts: no
vars:
args_list:
- content: hello world
dest: /tmp/test1.txt
mode: 0666
- content: test test test
dest: /tmp/test2.txt
mode: 0444
tasks:
- copy:
args: "{{ item }}"
with_items: "{{ args_list }}"