一本剧本中跨主机的ansible变量

时间:2020-04-03 07:19:35

标签: ansible

是否可以将值存储在变量中并在多个主机之间使用。我发现它应该与set_fact一起使用,所以我尝试了这样。但这不起作用。

- hosts: db
     remote_user: root
     tasks:

     - name: set fact
       set_fact:
         zone_id: "app"
         subnet_id: 28
        when:  host_ip.find("10.1.30") != -1

        ....
 - hosts: ns01
     remote_user: root
     tasks:

    - name:
      debug:
        var: "{{ hostvars['db']['zone_id'] }}"

    ....

但是我收到以下错误消息:“任务包括带有未定义变量的选项。错误为:“ hostvars ['db']”未定义”。

谢谢

1 个答案:

答案 0 :(得分:0)

set_fact用于从主机提取信息并将其保存以备后用。它用于获取随时间变化的信息。

它将信息保存为常规变量,因此您将能够以{{ zone_id }}的身份访问它。

主机变量用于存储有关主机之间的“静态”信息,这些信息在主机之间可能会有所不同,因此,如果此区域未更改,请将其放入主机变量中。如果需要在运行时进行检查,请使用set_fact