WindowsをAnsibleでごにょごにょする ~初期設定編~
概要
WindowsをAnsibleでプロビジョニングしようと思ったら初期設定の段階で詰まったのでメモ。
環境
AWS上でやりました。
ターゲットノード: Windows2016(ami-151a78f8)
コントロールノード: Amazon Linux2(ami-e99f4896)
コントロールノード側準備
まずpipをインストール
こちらを参考にさせていただきました。
qiita.com
ansibleとpywinrmインストール
$ pip install ansible $ pip install pywinrm
ターゲットノード側準備
Ansibleから疎通が取れるようセットアップ。
こちらを参考にさせていただきました。
qiita.com
プレイブック実行
/etc/以下にディレクトリ等を作成し、プレイブック作成、実行。
以下のようなメッセージが表示され、プレイブックが実行されない。
[WARNING]: Unable to parse /etc/ansible/hosts as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
どうやらデフォルトで見ているインベントリファイルと自分が設定したファイルが違うみたい。
トラブルシュート
ansible.cfgをプレイブックと同じディレクトリに配置。
インベントリファイルは/usr/local/etc/ansible/inventoryに置いているのでそこを指定。
#ansible.cfg [defaults] inventory=/usr/local/etc/ansible/inventory
プレイブック実行
[WARNING]: Unable to parse /usr/local/etc/ansible/inventory as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
/usr/local/etc/ansible/inventoryがinventory sourceだということをどこかで明言しないといけないらしい…
面倒なのでオプションで何とかならないか模索。
$ ansible-playbook -i ./inventory/hogehoge.ini hogehoge.yml -vvv TASK [Gathering Facts] *********************************************************************** task path: /usr/local/etc/ansible/admin_lock.yml:1 Using module file /usr/lib/python2.7/site-packages/ansible/modules/windows/setup.ps1 <10.X.X.X> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT XXXX TO 10.X.X.X EXEC (via pipeline wrapper) ok: [10.X.X.X] META: ran handlers
疎通できました。