当在 ansible playbook 中编写 jinja 脚本时,是否可以在 playbook 外部使用所述脚本显示的变量?

当在 ansible playbook 中编写 jinja 脚本时,是否可以在 playbook 外部使用所述脚本显示的变量?

这是脚本

j2
 tasks:
    - name: template script
      set_fact:
        servers: |
          {% for node_type in item.node_type %}
            {% for individial_desk in node_type.desc %} 
              {% for count_of_desc in range(0, individial_desk.count) %}
            - node_type: {{ node_type.name }}
                  server_kind: {{ individial_desk.kind }}
                  server_name: {{ node_type.node_names[count_of_desc] }}
                  server_number: {{ count_of_desc + 1 }}
              {% endfor %}
            {% endfor %}
          {% endfor %}
      loop: "{{ clusters }}"

我想创建一个 yaml 列表,其中包含我为每次迭代输出的 4 个值。但输出本身很奇怪,我觉得尝试将输出转换为正确的 yaml,然后我必须将其重新注入到剧本中,这是一个巨大的意外解决方法,需要花费我几个小时。

那么有没有办法在 j2 或 ansible 中创建 yaml 对象并为其附加属性?

或者是否可以以某种方式将这 4 个显示的变量(node_type、server_kind、server_name 和 server_number)用于 ansible playbook,以便它可以构建 yaml 列表,然后我可以使用它?

相关内容