【问题标题】:Ansible loop over multiple dictionaries/lists多个字典/列表的 Ansible 循环
【发布时间】:2016-07-29 18:46:13
【问题描述】:

在我的剧本中,我想循环遍历两个字典(或一个字典和一个列表)。一个是域列表(或字典),另一个是包含 aws 区域和相应服务器 IP 的字典,用于基于延迟的路由的 DNS 条目。我想为每个域为每个 aws-region 设置一个 DNS 记录。

- name: set DNS records for Domains
  route53:
    zone: "{{ item[0].key }}"
    record: "{{ item[0].key }}"
    value: "{{ item[1].value.server_ip }}"
    region: "{{ item[1].key }}"
    identifier: "{{ item[1].key }}"
  with_nested:
  - "{{ domain_dict }}"
  - "{{ aws_dict }}"

使用两个列表,该示例可以正常工作。如何使用至少一本字典让它工作?

domain_dict:(也可以是一个列表)

domain_dict:
  mytest1.example:
  mytest2.example:
  mytest3.example:

aws_dict:

aws_dict:
  us-east-1:
   # some other region-related stuff like ami-id,...
    server_ip: 1.2.3.4
  us-west-1:
   # some other region-related stuff
    server_ip: 1.2.3.5    
  us-west-2:
   # some other region-related stuff
    server_ip: 1.2.3.6
  #all other aws-regions

【问题讨论】:

  • 能否包含变量的内容:domain_dictaws_dict

标签: list loops dictionary ansible ansible-playbook


【解决方案1】:

自定义lookup_plugin 是您的最佳选择。否则这将是一个丑陋的set_fact序列。

PS: 虽然您通常不必这样做,但如果您希望编写自己的方法来循环任意数据结构,您可以阅读 Developing Plugins 以获取一些入门信息。以上每个特性在ansible中都是作为插件实现的,所以有很多实现可以参考

【讨论】:

    猜你喜欢
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    相关资源
    最近更新 更多