***本記事にはプロモーションが含まれています。***
前回、VagrantとDockerで環境構築をしたので、Ansibleを使ってみることにしました。
Vagrantで作ったゲストOSに対してAnsibleで環境設定をするには、大きく分けると次の3つの方法があります。
- Vagrantfileの中ではプロビジョニングを使わず、ゲストOSを立ち上げるだけにして、ansible単独でゲストOSを操作する方法
- Vagrantfileの中でconfig.vm.provision 'ansible_local'として、Vagrantのansible_localというプロビジョニングを使う方法
- Vagrantfileの中でconfig.vm.provision 'ansible'として、Vagrantのプロビジョニングを使う方法
1番の方法は、WindowsホストではAnsibleからサポートされていません。
2番の方法は、AnsibleをゲストOSにインストールして、ゲストOS内でAnsibleを動かします。よって、Windowsホストでも使えます。
3番の方法は、WindowsホストではVagrantからは公式にはサポートされていません。そもそも1番の方法でansibleコマンドが動かないと、Vagrantでは動きようがありません。
このように、Windowsをホストにする場合、ansible_localしか方法はないのかと思いました。
実際、MSYS2のpipでパッケージを入れてみても、ansibleコマンドはエラーが出て動きません。
でも、Cygwinで動かしている人がいて、何とかならないかなとやってみることにしました。
最近はMSYS2をメインに使っています。そこでMSYS2で検索してみると、Ansibleを動かした人がいました。
[ansible] MSYS2 で ansible を使えるようにする手順
この通りやったらansibleが動き出しました。ありがとうございます。
ポイントは、32bitバージョンのMSYS2(msys2-i686-20161025.exe)を使うことです。64bitバージョンでは動きませんでした。
(2017/05/31)訂正
MSYS2のバージョンが問題ではなかったです。インストールするパッケージがmsysのpython2である必要がありました。
pacman -S python2
です。mingw-w64-x86_64-python2とかではだめでした。スタートメニューから起動するコンソールがMSYS2 MinGW 64bitやMSYS2 MinGW 32bitだと、MinGWのpythonがインストールしてある時はそちらが優先的に使われてしまうので気をつけてください。
インストールが終わったら、SSHでゲストOSにアクセスできることを確認して、ansibleが使えるようになります。
次回は、SSHについて書きます。