首页 > 解决方案 > Ansible playbook 中的主机名检查

问题描述

我有一些用于 linux 客户端的 ansible playbook。与环境的连接是通过 VPN 进行的,每个连接的客户端都从池中获取一个 IP。分配的 IP 是第一个可用的。客户端使用 SSSD 更新 DNS。这会导致在 DNS 中将相同的 IP 分配给多个主机,并且剧本可能会在错误的系统上运行。

如果客户端上的主机名与清单中的主机名不匹配,有没有办法检查并失败?启用严格的主机密钥检查将部分解决此问题,但我希望进行适当的检查以确保剧本在正确的客户端上运行。

标签: linuxansible

解决方案


在 KamilCuk 发表评论后,我查看ansible_facts并添加了 fqdn 和inventory_hostname. 我在剧本中的最终结果是:

- name: Check inventory_hostname to fqdn
  assert:
    that:
      - inventory_hostname == ansible_facts["fqdn"]
    fail_msg: Hostname does not match inventory
    quiet: yes

即使某些客户端在收集事实部分中没有显示为“绿色”,但如果它们不是正确的客户端,它将在断言部分中失败。


推荐阅读