ansible - 在查找内部查找 - 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
输出:
失败的!=> {“msg”:“模板化字符串时出现模板错误:预期令牌',',得到'env'。字符串:{{lookup('file','+lookup('env','ENV')+_hosts。文本') }}”}
我知道这是一个语法问题,但就是不知道它是什么。
解决方案
使用辅助变量:
- 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' ) }}"
推荐阅读
- python - 无法创建“Union [bool, int]”类型
- emacs - 如何退出 SLIME - 逗号或退出不起作用
- python - PyTorch LSTM:RuntimeError:无效参数 0:张量的大小必须匹配,但维度 0 除外。在维度 1 中得到 1219 和 440
- entity-framework-core - 在 Entity Framework Core 中查询必须包含一组值的记录
- javascript - 为什么动画的当前时间总是0?
- ios - 在 iphone webview 上测试本地 http 开发服务器
- c# - NullReferenceException:对象引用未设置为统一对象错误的实例
- xamarin.forms - Xamarin App Shell - 在代码中关闭弹出菜单
- jquery - .removeClass() 不适用于过滤搜索和分页点击
- rest - 如何在方法级别记录 REST API 版本