来世から頑張る!!

技術ブログを目指して

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が入っていないといけないので、 それはサーバーのディストリビューションに合わせてって感じになるのかと。

私からは以上です。