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

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

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

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

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

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

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

谢谢你的建议。

问候,

尼科斯

答案1

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

- debug: 
    var: ansible_enp0s8.ipv4.address

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

我尝试建立以下变量 {{ ansible_{{ nrpe_address_server }}.ipv4.address }} 但是不起作用

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

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

- debug: 
    var: hostvars[inventory_hostname]['ansible_'~nrpe_address_server].ipv4.address

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

相关内容