在内部查找中查找-ansible

时间:2018-09-05 16:40:42

标签: ansible

我正在尝试使用lookup插件从查找文件的查找函数中查找环境变量。

因此文件名为_hosts.txt,我希望查找函数将ENV替换为传递的环境变量。

我查看了Ansible文档以进行查找,但仍然无法找出错误。

这是代码块:

- name: "Update the /etc/hosts file"
  blockinfile:
   block: "{{ lookup('file', ' + lookup('env', 'ENV') +_hosts.txt') }}"
   dest: "/etc/hosts"
   backup: yes

输出:

  

失败! => {“ msg”:“模板字符串时发生模板错误:预期   令牌',',得到'env'。字符串:{{lookup('file','+ lookup('env',   'ENV')+ _hosts.txt')}}“}

我知道它是一个语法问题,但无法弄清楚它是什么。

1 个答案:

答案 0 :(得分:3)

使用辅助变量:

- name: "Update the /etc/hosts file"
  blockinfile:
    block: "{{ lookup('file', filename) }}"
  vars:
    filename: "{{ lookup('env', 'ENV') }}_hosts.txt"

或者您可以将其写成一行:

block: "{{ lookup('file', lookup('env', 'ENV') + '_hosts.txt' ) }}"