linux - Ansible playbook 中的主机名检查
问题描述
我有一些用于 linux 客户端的 ansible playbook。与环境的连接是通过 VPN 进行的,每个连接的客户端都从池中获取一个 IP。分配的 IP 是第一个可用的。客户端使用 SSSD 更新 DNS。这会导致在 DNS 中将相同的 IP 分配给多个主机,并且剧本可能会在错误的系统上运行。
如果客户端上的主机名与清单中的主机名不匹配,有没有办法检查并失败?启用严格的主机密钥检查将部分解决此问题,但我希望进行适当的检查以确保剧本在正确的客户端上运行。
解决方案
在 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
即使某些客户端在收集事实部分中没有显示为“绿色”,但如果它们不是正确的客户端,它将在断言部分中失败。
推荐阅读
- html - HTML通过内联样式添加边框图像
- python - 使用python的文本文件标题中的条目列表
- r - 正则表达式 - 用逗号分割字符串,跳过平衡括号之间的任何内容
- firebase - 删除旧数据时,以前工作的 Firebase 功能现在失败
- sql - SQL - 在时区
- bash - 将行格式化为 CSV 条目并使用 sed 对其执行转换
- linux - 通过命令提示符加入域:AWS
- java - 在 JDK 11 上运行 Ionic for Android
- docker - Spring Boot v1.5.13 Docker:从请求中获取 Docker IP 而不是客户端 IP
- c++ - 如何正确填充在堆上分配的二维数组?