小编Bob*_*bby的帖子

有条件地合并 Ansible 中的主要和次要字典

我正在尝试合并包含许多应用程序设置的两个词典。在附加到各个主机的主字典中,它包含特定于该服务器的内容(例如与应用程序的 git 存储库相关的版本):

项目/host_vars/host_name.yml

installed_apps:
  pineapple:
    version: master
  pear:
    version: "1.1"
Run Code Online (Sandbox Code Playgroud)

然后第二个包含特定于应用程序的所有设置:

项目/group_vars/apps.yml

all_apps:
  pineapple:
    setting1: blah
    setting2: di
    setting3: blah
  apple:
    setting1: hi
  pear:
    setting3: there
Run Code Online (Sandbox Code Playgroud)

从这些我想构建一个字典,它结合了两者的值,前提是该应用程序存在于“installed_apps”中,以便 ansible 拥有它需要在某个服务器上安装的所有应用程序的所有详细信息:

new_dict:
  pineapple:
    version: master
    setting1: blah
    setting2: di
    setting3: blah
  pear:
    version: "1.1"
    setting3: there
Run Code Online (Sandbox Code Playgroud)

在 Python 中,它会是这样的:

installed_apps = {
    "pineapple": {"version": "master"},
    "pear": {"version": "1.1"}
}

all_apps = {
    'pineapple': {'setting1': 'blah', 'setting2': 'di', 'setting3': 'blah'},
    'apple': {'setting1': 'hi'},
    'pear': {'setting3': 'there'}
}

new_dict …
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible

3
推荐指数
1
解决办法
2982
查看次数

标签 统计

ansible ×1

jinja2 ×1