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

问题描述 投票:0回答:2

我有一个安塞的任务:

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

我怎么能这样做?

ansible
2个回答
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
投票

要添加到@ 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
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.