查找内部查找 - ansible

Pra*_*mbe 5 ansible

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

所以文件名是 _hosts.txt,我希望查找函数用传递的环境变量替换 ENV。

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

这是代码块:

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

输出:

失败的!=> {"msg": "模板字符串时出现模板错误:预期标记 ',',得到 'env'。字符串:{{ lookup('file', ' + lookup('env', 'ENV') +_hosts。文本') }}”}

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

tec*_*raf 5

使用辅助变量:

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

或者您可以将其写在一行中:

block: "{{ lookup('file', lookup('env', 'ENV') + '_hosts.txt' ) }}"
Run Code Online (Sandbox Code Playgroud)