dictionary - Ansible如何创建字典键列表
问题描述
我可能缺少一些简单的东西。我在 vars.yml 中有字典
deploy_env:
dev:
schemas:
year1:
- main
- custom
year2:
- main
- custom
- security
year3:
- main
- custom
然后在我的 playbook.yml 我有类似的东西
- set_fact:
years: "{{ deploy_env.dev.schemas }}"
- name: Create schemas
shell: "mysql ....params go here... {{ item }}"
with_nested:
- "{{ years }}"
如果vars.yml中的模式是一个简单的列表,则上述工作正常,即:
...schemas:
- year1
- year2
- year3
但是,只要我在每年下添加其他项目(将其作为字典(?),我就开始在行上遇到错误:- "{{ years }}"。
我基本上想用这个任务的year1、year2、year3值填充{{ years }} 。
我看过很多例子,但我看到的一切都太复杂了,而且是关于如何创建没有帮助的字典。
谢谢!
解决方案
可以创建字典键的列表。例如
- set_fact:
years: "{{ deploy_env.dev.schemas.keys()|list }}"
- debug:
var: item
loop: "{{ years }}"
给
"item": "year1"
"item": "year2"
"item": "year3"
**列表与字典**
报价:
“在每年下添加其他项目(使其成为字典(?)”
添加项目不会将列表更改为字典。在YAML中使用破折号“-”引入列表项。在列表的每个项目下添加其他项目使其成为列表列表。
列表示例:
schemas:
- year1
- year2
- year3
列表列表示例
schemas:
- year1:
- main
- custom
- year2:
- main
- custom
- security
- year3:
- main
- custom
字典示例:
schemas:
year1:
- main
- custom
year2:
- main
- custom
- security
year3:
- main
- custom
推荐阅读
- java - AIDE 在 http 请求上崩溃
- python - 从打开的文本文件中读取字符串
- flutter - 未定义命名参数“形状”。未定义命名参数“borderRadius”。未定义命名参数“activeColor”
- java - java类加载器内存泄漏示例
- python - Python:如何在 Networkx 中聚合边缘标签
- angular - 在 html 元素选择上设置数据源时,复选框的主切换不起作用
- mqtt - Aedes MQTT 保留和传入消息未按顺序排列
- c - 指的是二维数组的一维或二维部分?
- php - 数据库中的“密码”列无法正常工作
- webdriver-io - 无法在 WebdriverIO 中使用 $$ 登录与元素交互