Ansible,通过变量检索给定网络接口的 IP 地址

Nik*_*kos 2 networking ansible

我目前面临着我的 ansible 角色的问题,实际上我的 ansible 角色在 Linux 上安装了 NRPE 服务器。

在某些情况下,这些服务器有多个 NIC,需要将 NRPE 服务器绑定到一个特定的 NIC(专用于监控网络)。

我的目标是检索指定网卡的 IP 地址(这是一个变量,有时它可能是另一个网卡)并将该 IP 设置为我的 nrpe.cfg 中的 server_address 选项。

经过一些研究、尝试和错误,ansible_fact 似乎是收集这些信息的方法。我想我必须注册一个变量才能与我的 jinja2 模板一起使用。

我的主要问题是如何从指定的 NIC (enp0s8) 检索 IP 地址。

感谢您的建议。

问候,

尼科斯

Zor*_*che 9

如果您的剧本有gather_facts: yes或者您setup在剧本中运行任务,则应该有一个类似的变量可用。

- debug: 
    var: ansible_enp0s8.ipv4.address
Run Code Online (Sandbox Code Playgroud)

如果您想查看通常发现的所有可能的变量,请运行如下命令ansible some-hostname -m setup

我尝试构建以下变量 {{ ansible_{{ nrpe_address_server }}.ipv4.address }} 它不起作用

您不在表达式内使用 {{}},或者换句话说,您不能嵌套它们。

您可能需要的是这样的东西。

- debug: 
    var: hostvars[inventory_hostname]['ansible_'~nrpe_address_server].ipv4.address
Run Code Online (Sandbox Code Playgroud)

使用 [] 语法允许您使用动态数据访问特定变量。is~连接字符串。