我目前遇到了 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
使用 [] 语法允许您使用动态数据访问特定变量。它~
连接字符串。