2016-06-13 51 views
0

我正在使用ansible vsphere_guest模块在VMWare环境中启动基本Windows机器。在我的手册中,为此我设置了Hosts: 127.0.0.1 connection: local。我这样做的原因是我没有在任何特定的主持人针对这个剧本,因为我还没有。我反而想在本地运行剧本。Ansible Delegate_to WinRM

当这个运行,我得到一个新的闪亮的Windows服务器虚拟机。我现在想要做的是重命名该虚拟机的计算机名称。要做到这一点,我想上传并运行一个PowerShell脚本,如rename_host.ps1 $newHostname。据我所知,我需要使用脚本模块来做到这一点。但是,这一次我想定位我的全新虚拟机,我通过一个事实{{ newvm_ipaddress }}获得IP地址。

但是,当我尝试运行这个脚本与delegate_to: "{{ newvm_ipaddress}}",它试图运行SSH。 SSH不会工作,即时通讯瞄准与远程PowerShell的Windows机器。

是否有任何方式来设置连接使用winRM在delegate_to的上下文中?也许有更好的方法来做到这一点?

谢谢您的帮助

回答

0

什么新的主机名和使用ssh连接的WinRM更新PARAMS库存使用delegate_to,或者设置一些默认的包罗万象的命名与这些PARAMS方案之前?

例如:

[databases] 
db-[a:f].example.com:5986 ansible_user=Administrator ansible_connection=winrm ansible_winrm_server_cert_validation=ignore 
+0

我可以手动更新与新的虚拟机的IP地址清单文件,但我该怎么办自动从vsphere_guest返回新的IP地址? –

1

我设法工作,如何解决它。答案是“add_host”模块。我在vsphere_guest下面有一段戏如下。这会创建一个新的内存主机,然后可以通过不同的播放来访问它。

- add_host group=new_machine name={{ vm_ipaddress }} ansible_connection=winrm

在此之后,我再有一个新的游戏,现在可以针对该主机。

- host: new_machine

另外要注意,变量不不同主机跨越。该解决方案是使用在以下方面发挥了set_fact模块,然后可以从游戏中B内部访问

-set_fact: vm_ipaddress: "{{ hw_eth0.ipaddresses[1] }}" #hw_eth0 is the fact returned from the vsphere_guest module