我有一个艰巨的任务:
- name: Copy files from A to B
copy:
src: "{{ item }}"
dst: /usr/lib/modules/$(uname -r)/misc/
with_items:
- file.one
- file.two
问题是,ansible创建了一个名为/ usr / lib / modules / $(uname -r)/ misc /的目录(从字面上看)并将文件复制到那里,而不是用命令的输出替换$(uname -r)
我该怎么做?
答案 0 :(得分:3)
默认情况下,ansible将运行其设置模块并发现有关目标系统的事实。
您可以access these facts like any variable:
- name: Copy files from A to B
copy:
src: "{{ item }}"
dst: /usr/lib/modules/{{ ansible_kernel }}/misc/
with_items:
- file.one
- file.two
答案 1 :(得分:1)
要添加到@joppich的答案中,如果要替换实际上不可用的值,可以使用Registered Variables:
- name: Determine kernel version
command: uname -r
register: r_uname
- name: Copy files from A to B
copy:
src: "{{ item }}"
dst: /usr/lib/modules/{{ r_uname.stdout_lines[0] }}/misc/
with_items:
- file.one
- file.two