首页 > 解决方案 > ansible 库存,从另一台主机获取变量

问题描述

我试图弄清楚如何最好地安排我的库存、组变量和主机变量。有问题的资产涉及连接到少数思科 WAN 网关的许多思科路由器。我需要弄清楚如何最好地划分分组,以便在向客户推出更改时可以参考具体细节。路由器相当简单;每个路由器将位于一组 [路由器]、[客户名称] 和 [路由器型号] 中。

每个 Cisco 路由器都将连接到一个或两个 WAN 网关。作为我正在寻找的那种事情的一个例子,我想指定主 WAN 网关,然后从那里能够查找 WGW 公共 IP、BGP AS 等。

除了上述“全局变量”之外,我还需要访问每个 WAN 网关上特定于该客户的详细信息。我可以从 CPE 上的信息中拼凑出一些变量,但我不确定我是否也应该将每个 WAN 网关的 hostvar 文件细分为每个客户的组。

总而言之,当我为主机运行剧本时,我需要它从 host_vars 中的另一台主机访问变量

标签: ansible

解决方案


好的,如果我在此 hosts hostvars 文件中引用另一个主机的主机名,即:

primary_wgw: WGW001

然后在 WAN 网关 hostvars 文件中,我可以拥有:

public_ip: x.x.x.x
test_var: test
test_router_01:
  destination_ip: x.x.x.x
  test: x.x.x.x

我可以像这样引用变量:

- name: test variable
  debug:
    msg: "{{ hostvars[primary_wgw]['public_ip'] }}"

- name: test variable
  debug:
    msg: "{{ hostvars[primary_wgw][inventory_hostname]['test'] }}"

推荐阅读