yyp٩( 'ω' )و

色々触って遊んでます

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

疎通できました。