首页 > 解决方案 > Ansible:连接到没有 DNS 或 /etc/hosts 解析的节点

问题描述

我有一个动态库存脚本,它输出以下内容。

"NODE_A": {
        "inventory_hostname": "10.0.2.6",
        "inventory_lparname": "NODE_A"
}

节点无法通过 DNS 或其他方式解析,因为该网络是某种隔离的“管理”局域网。到目前为止,我运行了一个 Play,它修改了本地 /etc/hosts 文件以启用名称解析。由于 Ansible 控制器要转移到外地机器上,这已经不可能了。所以最大的问题是如何进行。我如何指示 Ansible 连接到 IP 地址而不是主机名,我可以分别使用“inventory_hostname”而不是“ansible_hostname”作为连接字符串,但保持主机名显示在 Play Recap 中?

标签: ansible

解决方案


我如何指示 Ansible 连接到 IP 地址而不是主机名,我可以分别使用“inventory_hostname”而不是“ansible_hostname”作为连接字符串,但保持主机名显示在 Play Recap 中?

处理此问题的正常方法是将库存主机名设置为“友好”名称,然后设置ansible_hostname为 IP 地址。也就是说,如果您的清单脚本报告了一个名为“host0”的主机,那么在调用--host host0它时应该会产生:

{
  "inventory_hostname": "host0",
  "ansible_host": "10.0.2.6",
}

您将host0在 playbook 输出中看到该名称,但 ansible 将使用该 IP 地址进行连接。


推荐阅读