我想运行一个使用 with_items 填充参数的任务,而不必手动编写parameter:{{item.key}}. 例如,我有这个主机变量:
HtpasswdsToSet:
- path: /etc/nginx/passwdfile
name: janedoe
password: 'abc123'
- path: /etc/nginx/passwdfile
name: bob
password: '123abc'
Run Code Online (Sandbox Code Playgroud)
请注意,字典列表键是实际的 htpasswd 任务参数。
在剧本中,而不是这样做:
- name: add htpasswd users
htpasswd:
path: {{item.path}}
name: {{item.name}}
password: '{{item.password}}'
with_items: "{{HtpasswdsToSet}}"
Run Code Online (Sandbox Code Playgroud)
有没有办法简单地做到这一点?
- name: add htpasswd users
htpasswd: "{{HtpasswdsToSet}}"
Run Code Online (Sandbox Code Playgroud)
这真的会帮助我减少剧本的冗长。谢谢你。
使用 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 }}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4522 次 |
| 最近记录: |