gpt4 book ai didi

dictionary - Ansible include_vars 到字典中

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

在我的 ansible playbook 中,我将目录列表读入列表。然后我想从这些目录中的每一个读取“config.yml”文件并将它们的内容放入字典中,以便我可以通过该字典中的目录名称引用配置数据。
第一部分没问题,但我无法让第二部分工作:

第一步,加载目录:

- name: Include directories
include_vars:
file: /main-config.yml
name: config

第 2 步,从目录加载配置:
- name: load deploymentset configurations
include_vars:
file: /path/{{ item }}/config.yml
name: "allconfs.{{ item }}" ## << This is the problematic part
with_items:
- "{{ config.dirs }}"

我尝试了不同的东西,比如 "allconfs['{{ item }}'] ,但似乎都不起作用。剧本成功完成,但数据不在字典中。
我也尝试过预先定义外部字典,但这也不起作用。

配置文件本身非常简单:

/main-config.yml:
dirs:
- dir1
- dir2
- dir3

/path/dir1/config.yml:
some_var: "some_val"
another_var: "another val"

我希望能够像这样访问 config.yml 文件的值:
{{ allconfs.dir1.some_var }}
更新 尝试康斯坦丁斯的方法:
  - name: load deploymentset configurations
include_vars:
file: /repo/deploymentsets/{{ item }}/config.yml
name: "default_config"
with_items:
- "{{ config.deploymentsets }}"
register: default_configs


- name: combine configs
set_fact:
default_configs: "{{ dict(default_configs.results | json_query('[].[item, ansible_facts.default_config]')) }}"

错误信息:
fatal: [127.0.0.1]: FAILED! => {"failed": true, "msg": "Unexpected templating type error occurred on ({{ dict(default_configs.results | json_query('[].[item, ansible_facts.default_config]')) }}): <lambda>() takes exactly 0 arguments (1 given)"}

最佳答案

这是我的一个项目中具有类似功能的一段代码:

- name: Load config defaults
include_vars:
file: "{{ item }}.yml"
name: "default_config"
with_items: "{{ config_files }}"
register: default_configs
tags:
- configuration

- name: Combine configs into one dict
# Здесь мы делаем словарь вида
# default_configs:
# config_name_1: { default_config_object }
# config_name_2: { default_config_object }
# config_name_3: { default_config_object }
# ...
set_fact:
default_configs: "{{ dict(default_configs.results | json_query('[].[item, ansible_facts.default_config]')) }}"
tags:
- configuration
default_config是临时加载 var 数据的虚拟 var。
诀窍是使用 register: default_configsinclude_vars并使用以下任务解析它,去除不必要的字段。

关于dictionary - Ansible include_vars 到字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45285574/

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