AnsibleでDockerとかしたいのにdocker-pyに苦しめられた話
はい。タイトル通りです。
ansibleとはpythonで動いてるけどpython書かなくてもいい不思議な何かという認識。
で、ansibleからdockerコンテナー立ち上げるときのレシピがこちら。
--- - name: Run CentOS container docker: image: "centos:centos6" name: sample001 tty: yes net: host docker_api_version: 1.18
net=host
はネット設定はデフォルト不可だよというエラーメッセージ用、
docker_api_version=1.18
は本番で動いてるdockerのバージョン違うよ用です。
なのですが、これを実行してもdocker-py
が見つからないよ系エラーが出るのです。
ということでローカルでpip install docker-py
したりしてみたのですが、
これが一向に消えてなくならない。
virtualenvがダメなのかもとか悩んでいろいろググったり試したりした結果・・・
docker-pyは設定先の環境のデフォルトpythonに必要でした!!
はい。ローカルに入っていようが関係なかったのです。
よって、必要なのは設定先ホストでのpip install
。
これもansibleに書いてしまいます。
--- - name: Install docker-py become: yes become_method: sudo become_user: root pip: name: "docker-py" version: 1.7.1 state: present
ansibleの恒等性とかを考えると、state=latest
とどっちがいいのかわかりません。
sudoはたぶん必要。と信じている。
このためにはサーバーにもpipが入っていないといけないので、 それはサーバーのディストリビューションに合わせてって感じになるのかと。
私からは以上です。