Ansible根据事实设置变量值

Ansible根据事实设置变量值,ansible,Ansible,我想做一个ansible任务,将一些文件复制到客户端。 将复制哪个文件取决于客户端体系结构(x86或i386)。 在没有代码重复的情况下,最好的方法是什么 我的意思是,如果我能用一个任务,比如: name: copy file copy: src={{ src }} dest={{ dest }} 通过一些操作。您可以将特定于系统的设置存储在以体系结构命名的vars文件中 在您的角色中,您将拥有一个包含以下内容的文件x86.yml: ... copySrc: fileA copyDest:

我想做一个ansible任务,将一些文件复制到客户端。 将复制哪个文件取决于客户端体系结构(x86或i386)。 在没有代码重复的情况下,最好的方法是什么

我的意思是,如果我能用一个任务,比如:

name: copy file
copy: src={{ src }} dest={{ dest }}

通过一些操作。

您可以将特定于系统的设置存储在以体系结构命名的vars文件中

在您的角色中,您将拥有一个包含以下内容的文件
x86.yml

...

copySrc: fileA
copyDest: /some/path/A

---
对于
i386.yml
,情况也一样:

...

copySrc: fileB
copyDest: /some/path/B

---
然后使用系统事实
ansible\u架构
包含正确的文件:

- include_vars: "{{ ansible_architecture }}.yml"

- name: Copy file
  copy:
    src={{ copySrc }}
    dest={{ copyDest }}
您可以使用:

vars:
  src: "{{ 'file_amd64.tar.gz' if ansible_architecture == 'x86_64' else 'file_i386.tar.gz' }}"
tasks:
  - name: copy file
    copy: src={{ src }} dest={{ dest }}
我最终做了这样的事: 我在
文件
目录中有两个目录:
x86_64
i386
。 每个包含
my_文件
(包含相关内容)

我的角色包含以下任务:

name: copy file
copy: src={{ ansible_architecture }}/my_file dest={{ dest }}

谢谢你的回答帮助我想出了解决办法。看看我的答案。谢谢。你的回答帮助我想出了解决办法。看看我的答案。