Ansible 在继续运行手册的其余部分之前,如何将有关远程主机的自定义事实存储在一起?

Ansible 在继续运行手册的其余部分之前,如何将有关远程主机的自定义事实存储在一起?,ansible,ansible-facts,Ansible,Ansible Facts,我正在用Ansible编写一个集群供应剧本,要求每个节点在安装时配置其他节点的公共证书。我想不出一个简单的方法来告诉ansible: 去拿远程证书 把他们推到名单上 使这些证书摘要可供每个远程节点使用,以生成经授权的节点列表 目前,考虑到集群节点的数量很少,我将手工完成这项工作(将第一个剧本的输出复制到第二个剧本的变量中)但如果有一种方法可以在一个剧本中做到这一点,那将是非常有帮助的。我的回答将尽可能笼统:将一个事实存储在组中的一台特定机器上,并从另一台机器读取组中所有机器的该事实 我想当然地认

我正在用Ansible编写一个集群供应剧本,要求每个节点在安装时配置其他节点的公共证书。我想不出一个简单的方法来告诉ansible:

  • 去拿远程证书
  • 把他们推到名单上
  • 使这些证书摘要可供每个远程节点使用,以生成经授权的节点列表

  • 目前,考虑到集群节点的数量很少,我将手工完成这项工作(将第一个剧本的输出复制到第二个剧本的变量中)但如果有一种方法可以在一个剧本中做到这一点,那将是非常有帮助的。

    我的回答将尽可能笼统:将一个事实存储在组中的一台特定机器上,并从另一台机器读取组中所有机器的该事实

  • 我想当然地认为你的剧本实际上是针对一个包含你所有集群节点的组
    my_node\u group
  • 将来自远程节点的信息存储在其自己的事实中(或直接从您的清单中获取此信息…)

  • 这是真正有用的部分:在别处使用存储的信息
    - name: example loop to access 'my_info` on each machines of group `my_node_group`
      debug:
        var: item
      loop: >-
        {{
          groups['my_node_group']
          | map('extract', hostvars, 'my_info')
          | list 
        }}
    
  • 最后一步的说明

    • 获取组中的机器
      my\u node\u组
    • 将这些名称用于on
      hostvars
      并获得相应事实哈希列表,其中仅保留
      my_info
      属性
    • 将返回的映射对象转换为列表,并在其上循环

    谢谢-这确实有助于澄清总体战略。我关心的是大型主机列表的并发性:是否有任何东西会迫使ansible暂停以确保收集步骤已完成?还有一个确定我当前针对哪个组执行的元问题。我知道一个主机可以在多个组中,但只能有一个组处于活动状态?
    - name: example loop to access 'my_info` on each machines of group `my_node_group`
      debug:
        var: item
      loop: >-
        {{
          groups['my_node_group']
          | map('extract', hostvars, 'my_info')
          | list 
        }}