windows で手軽に ansible が実行できるようにポータブル cygwin 環境を作った

ansibleの実行環境を手軽に使える環境がなかったので作ってみた。

qiitaにcygwinで環境作っても徒労に終わるとか書いてあるのでついカッとなってやった。 いろんな人がVM入れるとか書いてるけど、VM入れたうえで諸々入れるとかハードル高くないかな。

cygwin以外だと依存関係を解決しても動かないので注意が必要。 理由はまた別途書くとする。 ダウンロードは http://www.lnc.jp/cygwin.zip

解凍すると800Mになるので容量は確保してください。

zipを解凍してcygwin-ansible.batを実行すればansibleのコマンドが実行できる。 pipなども入っているので必要があれば追加でライブラリも入れられます。

いくつか制限があります。

  • windowsユーザー名にスペースが入っているとlocalactionが失敗します
  • 日本語のいくつかの文字をnameに入れるとシンタックスエラーになります
  • -c paramiko オプションでsshクライアントを指定する必要があります

初めて使う状態で公開鍵認証を使うのであれば以下のコマンドで鍵が作れます。

ssh-keygen

鍵を作成済みなら以下で公開鍵を取り込めます。

鍵はパスフレーズを入力すると利用可能な状態でagentに保管されます。 agentが終了するまでパスフレーズ無しで利用できます。

ssh-agent.exe bash
ssh-add ~/.ssh/id_rsa

以下はありがちなエラー

ssh-agent.exe bash
ssh-add ~/.ssh/id_rsa

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0775 for '/home/bols/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

.sshのディレクトリは700のパーミションでないと他のユーザーから読み取れてしまうのでエラーになります。 以下のようにパーミッションを変更することでエラーにならなくなります。

chmod 700 -R .ssh

ansibleはなぜか hosts ファイルに実行権限がないとエラーになります。 エラーは以下

ERROR: The file hosts is marked as executable, but failed to execute correctly. If this is not supposed to be an executable script, correct this with `chmod -x hosts`.

この場合、以下のコマンドで実行権限を外すことによって実行できます

chmod -x hosts
宣伝:ansibleハンズオンやります。

IDCFクラウド使うのは大人の事情です。