gpt4 book ai didi

ansible - 如何从字符串创建 Ansible 变量

转载 作者:行者123 更新时间:2023-12-04 16:58:31 25 4
gpt4 key购买 nike

例如:

我有我想使用的变量 {{ ami_redhat_7_2 }}

vars:
OsType: redhat
OsVersion: '7_2'

tasks:
- debug: 'msg="{{ ami_{{OsType}}_{{ OsVersion }} }}"'

我得到错误:
fatal: [localhost]: FAILED! => {
"failed": true,
"msg": "template error while templating string: expected token 'end of print statement', got '{'. String: {{ ami_{{ OsType }}_{{ OsVersion }} }}"
}

最佳答案

具有动态名称的“根”变量在 Ansible 中是一件棘手的事情。
如果它们是主机事实,您可以像这样访问它们:

{{ hostvars[inventory_hostname]['ami_'+OsType+'_'+OsVersion] }}

如果它们是播放绑定(bind)变量,您可以通过未记录的 vars 访问它们目的:
{{ vars['ami_'+OsType+'_'+OsVersion] }}

但它们永远不会被模板化,因为 vars以特殊方式处理。

对您来说最简单的方法是一些具有预定义名称和动态键名的 dict,例如:
ami:
redhat_7_2: 827987234/dfhksdj/234ou234/ami.id

要访问它,您可以使用:
{{ ami[OsType+'_'+OsVersion] }}

附言并删除 msg 周围的引号正如其他答案中所建议的那样。

关于ansible - 如何从字符串创建 Ansible 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40956212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com