我想使用带有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是从哪个文件夹中进行相对路径查找?
答案 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 }}"