ansible - Ansible如何使用变量和字符串的混合作为键从字典中获取值
问题描述
我试图实现这样的目标,说起来比实现容易,基本上我想在 import_task 中使用变量和字符串的混合作为键从字典中获取值,所以代码应该是这样的:
- import_tasks: "somefile_{{ somedic[ansible_distribution'_'ansible_distribution_major_version ] }}.yml"
dic 应该是这样的:
somedic: { "RedHat_7": "endoffilename" }
当在服务器 RedHat 7 上运行时,它应该结束加载一个名为
somefile_endoffilename.yml
解决方案
你不能用那个字典结构来做,因为它需要嵌套变量解引用,而 Jinja2 不支持。所以你的字典需要看起来像这样:
vars:
somedic:
"RedHat":
"7": "endoffilename"
在 JSON 中,这看起来像:
vars:
somedic: { "RedHat": { "7": "endoffilename" } }
然后,你可以得到你需要的东西:
---
- hosts: localhost
gather_facts: no
vars:
somedic: { "RedHat": { "7": "endoffilename" } }
OS: RedHat
MajorVersion: "7"
tasks:
- debug:
msg: "somefile_{{ somedic[OS][MajorVersion] }}.yml"
任务的输出debug
是:
TASK [debug] *************************************************************************
Tuesday 26 May 2020 11:14:30 -0400 (0:00:00.027) 0:00:00.146 ***********
ok: [localhost] => {
"msg": "somefile_endoffilename.yml"
}
推荐阅读
- android - Android:在 eink 设备上使用 fb0 绘图
- java - 在 springBoot 上设计一个 MongoDB 模式
- excel - 在 VBA 中清除组合框的内容
- google-oauth - 为什么 Google OAuth Api 会刷新 Token?
- dart - What code is put on the Event Loop - the Future body or the call to execute upon its completion (then)?
- r - 在 ggplot 哑铃图中添加图例
- r - 如何在闪亮中调整 addPolylines 函数?
- java - 如何将java lang中的对象添加到fxml文件
- google-cloud-bigtable - BigTable Java API 与 BigTable HBase Java API 的区别
- google-drive-api - Apex:获取上传到 Google Drive 服务帐户的文件的公共链接