New*_*hon 5 variables dictionary nested-lists ansible
我可能错过了一些简单的东西。我在 vars.yml 中有字典
deploy_env:
dev:
schemas:
year1:
- main
- custom
year2:
- main
- custom
- security
year3:
- main
- custom
Run Code Online (Sandbox Code Playgroud)
然后在我的 playbook.yml 我有类似的东西
- set_fact:
years: "{{ deploy_env.dev.schemas }}"
- name: Create schemas
shell: "mysql ....params go here... {{ item }}"
with_nested:
- "{{ years }}"
Run Code Online (Sandbox Code Playgroud)
如果vars.yml中的模式是一个简单的列表,则上述工作正常,即:
...schemas:
- year1
- year2
- year3
Run Code Online (Sandbox Code Playgroud)
但是,一旦我在每年下添加其他项目(使其成为字典(?),我就开始在线上出现错误:- "{{ years }}"。
我基本上想用此任务的year1、year2、year3值填充{{ years }}。
我看过很多例子,但我看到的一切都太复杂了,而且是关于如何创建没有帮助的词典。
谢谢!
可以创建字典键的列表。例如
- set_fact:
years: "{{ deploy_env.dev.schemas.keys()|list }}"
- debug:
var: item
loop: "{{ years }}"
Run Code Online (Sandbox Code Playgroud)
给
"item": "year1"
"item": "year2"
"item": "year3"
Run Code Online (Sandbox Code Playgroud)
引用:
“每年添加额外的项目(使它成为字典(?)”
添加项目不会将列表更改为字典。在YAML 中,列表中的一项用破折号“-”引入。在列表的每个项目下添加其他项目使其成为列表列表。
列表示例:
schemas:
- year1
- year2
- year3
Run Code Online (Sandbox Code Playgroud)
列表列表示例
schemas:
- year1:
- main
- custom
- year2:
- main
- custom
- security
- year3:
- main
- custom
Run Code Online (Sandbox Code Playgroud)
字典示例:
schemas:
year1:
- main
- custom
year2:
- main
- custom
- security
year3:
- main
- custom
Run Code Online (Sandbox Code Playgroud)