Command line ansible-如何在运行ansible playbook解析主机名时传递本地DNS服务器

Command line ansible-如何在运行ansible playbook解析主机名时传递本地DNS服务器,command-line,dns,ansible,ansible-playbook,resolve,Command Line,Dns,Ansible,Ansible Playbook,Resolve,我正在使用ansible(ansible 1.9.0.1) 我正在运行ansible playbook,以便在目标/远程计算机上使用其主机名执行一些操作 我的清单文件有一个主机名条目,即appserver01.newdomainname.com 当我运行ansible playbook只做一个简单的(hello world示例)时,它不会解析主机名。如果在清单文件中,我有x.x.x.x IP,那么它可以工作 因此,我的源计算机的/etc/resolv.conf中的名称服务器或搜索似乎没有使用完全

我正在使用ansible(ansible 1.9.0.1)

我正在运行ansible playbook,以便在目标/远程计算机上使用其主机名执行一些操作

我的清单文件有一个主机名条目,即appserver01.newdomainname.com

当我运行ansible playbook只做一个简单的(hello world示例)时,它不会解析主机名。如果在清单文件中,我有x.x.x.x IP,那么它可以工作

因此,我的源计算机的/etc/resolv.conf中的名称服务器或搜索似乎没有使用完全限定的域名(即appserver01.newdomainname.com)解析远程主机名

是否有任何方法可以调用ansible playbook并传递新的/本地DNS服务器,以便ansible可以首先从该DNS解析主机名(在清单文件中)(而不是从/etc/resolv.conf读取/解析主机名)


PS:我无法将此新的/本地DNS名称服务器xx.xx.yy.zz添加到/etc/resolv.conf。

解决此问题的一种方法是在清单文件中使用属性ansible\u ssh\u host。这与连接到本地DNS不同,但有点像是将DNS记录与库存一起传输。这样,您仍然可以通过主机名引用服务器,而不必在服务器主机文件中添加任何内容。所以看起来是这样的:

[myserver]
appserver01.newdomainname.com ansible\u ssh\u host=x.x.x.x


您甚至可以将这些映射移到一个host_vars文件中,并为每个部署环境保留不同的IP列表

我认为这是不可能的,因为我在ssh中没有看到这个选项。除了在Ansible清单或
.ssh/config
中实际定义IP之外,我唯一能想到的是ssh隧道(
ProxyCommand
)。如果您通过可解析目标主机的主机委派所有任务,则主机名不需要在本地解析。当您仅从主机上解析
ssh appserver01.newdomainname.com
时,这是否有效?@Mxx no。因为/etc/resolv.conf没有解析newdomain.com的名称服务器条目。我们也不想在每台服务器上更新/etc/hosts文件(我们将在其中运行ansible playbook),而且我们每天都会不断创建新域(开发团队中的任何人都可以在VCloud中创建VM/Vapp时创建mynewdomain.com或myname.com域)。如果我可以选择ansible/ansible playbook传递一个额外的DNS服务器,这样如果生产/服务器无法解析您的域,那么ansible将使用我们在命令行传递的DNS服务器来解析它。ansible 2.0已弃用
ansible\u ssh\u主机
,改为
ansible\u主机