首页 > 解决方案 > 将字典项附加到 Ansible 中的另一个字典

问题描述

希望这是可能的:

我正在使用 Ansible 库存,并尝试在另一个字典中引用一个字典。

ansible/group_vars/myapi/user-list.yml

  sysadmin_settings:
  - { shell: "/bin/bash", groups: "hardworkers" }

  myapi_admin_users:
  - { state: "present", name: "my.user1", shell: "{{ sysadmin_settings.shell }}", groups: "{{ sysadmin_settings.groups }}" }
  - { state: "present", name: "my.user2", shell: "{{ sysadmin_settings.shell }}", groups: "{{ sysadmin_settings.groups }}" }

但我得到一个“列表对象没有属性外壳”

我虽然是我在第一个字典中查找的内容。

理想情况下,我可以做类似的事情:

adminapi_admin_users:
  - { state: "present", name: "my.user1", type: "sysadmin" }

sysadmin当我在我的剧本中调用项目时引用变量myapi_admin.groups,例如将它们连接起来

谢谢

标签: bashansible

解决方案


我认为您可能会将 YAML 与一些 JSON(或 Jinja)混合在一起。通常,您似乎想要的内容会这样写:

sysadmin_settings:
  shell: "/bin/bash"
  groups: "hardworkers"

myapi_admin_users:
  - state: "present"
    name: "my.user1"
    shell: "{{ sysadmin_settings.shell }}"
    groups: "{{ sysadmin_settings.groups }}"
  - state: "present"
    name: "my.user2"
    shell: "{{ sysadmin_settings.shell }}"
    groups: "{{ sysadmin_settings.groups }}"

这在我的系统上对我有用。Ansible YAML 文档值得一看,并且对常见错误有有用的参考。


推荐阅读