yan*_*ael 4 ansible ansible-playbook
例如:
我有变量{{ami_redhat_7_2}}我想要使用它
vars:
OsType: redhat
OsVersion: '7_2'
tasks:
- debug: 'msg="{{ ami_{{OsType}}_{{ OsVersion }} }}"'
Run Code Online (Sandbox Code Playgroud)
我得到了错误:
fatal: [localhost]: FAILED! => {
"failed": true,
"msg": "template error while templating string: expected token 'end of print statement', got '{'. String: {{ ami_{{ OsType }}_{{ OsVersion }} }}"
}
Run Code Online (Sandbox Code Playgroud)
Kon*_*rov 11
具有动态名称的"root"变量在Ansible中是一件棘手的事情.
如果它们是主机事实,您可以像这样访问它们:
{{ hostvars[inventory_hostname]['ami_'+OsType+'_'+OsVersion] }}
Run Code Online (Sandbox Code Playgroud)
如果它们是游戏绑定变量,您可以通过未记录的vars对象访问它们:
{{ vars['ami_'+OsType+'_'+OsVersion] }}
Run Code Online (Sandbox Code Playgroud)
但是他们永远不会被模仿,因为他们会vars以特殊的方式对待.
最简单的方法是使用预定义名称和动态密钥名称的dict,例如:
ami:
redhat_7_2: 827987234/dfhksdj/234ou234/ami.id
Run Code Online (Sandbox Code Playgroud)
要访问它,您可以使用:
{{ ami[OsType+'_'+OsVersion] }}
Run Code Online (Sandbox Code Playgroud)
PS并删除msg其他答案中建议的引号.
| 归档时间: |
|
| 查看次数: |
4514 次 |
| 最近记录: |