在路径中使用bash命令的Ansible副本

时间:2018-09-18 10:21:01

标签: ansible

我有一个艰巨的任务:

- 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)

我该怎么做?

2 个答案:

答案 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