2016-06-13 58 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