CygwinでAnsibleは卒業
セットアップ中にぶちぶち切れて失敗続きになるわ、local_actionがよく分からない挙動を示すわで嫌になったのでCygwin使うのを止めてしまいましたが、一応色々回避はしたのでメモ。
SSHの接続に失敗する件
- 環境変数
ANSIBLE_SSH_ARGS
を設定する ansible.cfgに以下を追加する
[ssh_connection] ssh_args = -o ControlMaster=no
Vagrant provision
から呼び出すと、ansible-playbookがNot Foundになる件~local_action
が失敗する件
以前の記事で、以下のようなansible-playbook.batをおけば良いと書きましたが、あれだと不十分でした。
c:\cygwin\bin\python2.7.exe c:\cygwin\bin\ansible-playbook %*
具体的にはlocal_action
を使った時に、実行に必要な一時ディレクトリが存在しないという状態になります。
上記batから呼び出されたansible-playbookでは、次のようなコマンドがきちんと動いていない(ディレクトリを作れない)みたいなんですね。
sh -c "mkdir -p $HOME/.ansible/tmp/ansible-1380895750.84-137886494894963"
ただし、local_action
でもraw
を使用してコマンドを実行した場合は一時ディレクトリは不要らしいので問題ありません。
ですので、きちんとCygwin上のプロセスとして呼び出されるようにしてやる必要があります。
@echo off
PATH=C:\cygwin\bin;%PATH%;
sh -c 'python /bin/ansible-playbook %*'
これで一応、Vagrant provision
が動くようにはなります。