回答:从环境变量中的路径复制文件

时间:2019-05-13 12:17:54

标签: ansible

我想使用带有copy模块的Ansible将文件从本地复制到远程。失败,因为找不到文件。

我已经尝试了相对路径(从Ansible根目录开始)以及环境变量(这是首选方式)。

我认为Ansible不支持ENV,至少它找不到该文件。这是我的方法:

- name: Ensure test file
  copy:
    src: $DNM_TOOLS_HOME/ch/testfile.txt
    dest: /tmp/testfile.txt
    owner: root
    group: root
    mode: 0644

有没有一种方法可以利用环境变量?如果没有,Ansible是从哪个文件夹中进行相对路径查找?

1 个答案:

答案 0 :(得分:1)

Yaml不会像您尝试的那样插入环境变量,也不会使用jinja2 templating的ansible。

在这种情况下,您将必须使用ansible lookup,更具体地说是env lookup

src: "{{ lookup('env', 'DNM_TOOLS_HOME') }}/ch/testfile.txt"

请注意,查询总是在控制机器上运行。如果您需要从任务中的远程主机获取环境变量,则可以在ansible_env哈希中使用这些变量(例如some_yaml_key: "{{ ansible_env.MY_REMOTE_ENV_VAR }}"