2016-06-13 15 views
0

私は、VMWare環境で基本Windowsマシンをスピンアップするために、vsphere_guestモジュールを使用しています。私の作戦では、これを行うにはHosts: 127.0.0.1 connection: localと設定しました。私はこれをやっている理由は、私はまだ1つを持っていないので、私は特定のホストでこのプレイブックをターゲットにしていない私は信じています。代わりにプレイブックをローカルで実行したいと思います。WinRM対応のDelegate_to

これが実行されると、私は新しい光沢のあるWindowsサーバーVMを手に入れます。今私がやりたいことは、そのVMのコンピュータ名の名前を変更することです。これを行うために、私はアップロードして、rename_host.ps1 $newHostnameのようなpowershellスクリプトを実行しようとしています。私が理解するように、私はこれを行うためにスクリプトモジュールを使用する必要があります。しかし、今度は私のブランドの新しいVMをターゲットにしたいと思っています。実際のIPアドレスは{{ newvm_ipaddress }}です。

しかし、このスクリプトをdelegate_to: "{{ newvm_ipaddress}}"で試してみると、SSHとして実行しようとしています。 SSHは動作しません。遠隔のPowerShellでWindowsマシンをターゲットにしています。

delegate_toのコンテキストでwinRMを使用する接続を設​​定する方法はありますか?おそらくこれを行う良い方法がありますか?

はdelegate_toを使用する前に、新しいホスト名でとSSHのWinRM接続のparamsで在庫を更新、またはおそらくこれらのparamsでいくつかのデフォルトのキャッチオール命名規則を設定することについてどう

答えて

0

あなたの助けをありがとう!例えば

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

プレイB内からアクセスすることができますプレイA、でset_factモジュールを使用していましたその事実が新しいIPアドレスのためにvsphere_guestから戻ってくると自動的にそれは? –

1

が、私はそれを解決する方法を動作するように管理します。答えは不可能なモジュール 'add_host'です。私は以下のようにvsphere_guestでプレーしています。これにより、メモリ内の新しいホストが作成されます。このホストには、別のプレイによってアクセスすることができます。

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

この後、私は、今、このホストをターゲットにすることができ、新たな遊びを持っています。また、変数が異なるホストにまたがっていない、注意すべき

- host: new_machine

。解決策は、私は手動で新しいVMのIPアドレスを持つインベントリファイルを更新することができますが、私はどのように行うのか、その後

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