それでも気分は高専生

元高専生が自分のやってきたことを記事として残すためのてきとーなブログ

Ansible-containerのinstallでつまづく

TL;DR

githubのソースからインストール

はじめに

単一イメージで闇鍋状態の環境を複数のDockerコンテナに分割したい.

すでにAnsibleのPlaybookはあるのでDockerfileへの書き起こしは半分単純労働だが,どうせならPlaybookを使いまわしたい.

Welcome to ansible-container! — Ansible Container Documentation

ansible-containerというツールを見つけたので,これを使おうと決心.

インストールの過程

いろんな記事に載っているが, pip install ansible-containerでいいよとの事なので頑張ってみる

Collecting ansible-container
  Downloading https://files.pythonhosted.org/packages/bc/2a/b1252de3931173d26a30fc965be33c9cc0044cf7b23ce4c707f55d86830c/ansible-container-0.9.2.tar.gz (1.4MB)
    100% |████████████████████████████████| 1.4MB 648kB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/tmp/pip-install-pctywm/ansible-container/setup.py", line 10, in <module>
        from pip.req import parse_requirements
    ImportError: No module named req

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/tmp/pip-install-pctywm/ansible-container/

github.com

pipのバージョン下げたり色々してるけど,gitソースから持って来ればいいのね.

$ git clone https://github.com/ansible/ansible-container.git
$ cd ansible-container
$ sudo pip install -e .
...
ansible-container 0.9.3rc3 has requirement docker==2.7.0, but you'll have docker 3.7.0 which is incompatible.

なんかdockerモジュールのバージョン指定してる...しかもそこそこに古い...

$ sudo pip uninstall docker
$ sudo pip install docker
$ pip show docker
Name: docker
Version: 2.7.0
Summary: A Python library for the Docker Engine API.
Home-page: https://github.com/docker/docker-py
Author: Joffrey F
Author-email: joffrey@docker.com
License: Apache License 2.0
Location: /Library/Python/2.7/site-packages
Requires: websocket-client, backports.ssl-match-hostname, ipaddress, six, requests, docker-pycreds
Required-by: ansible-container
$ sudo pip install -e .
$ ansible-container
usage: ansible-container [-h] [--debug] [--devel] [--engine ENGINE_NAME]
                         [--project-path BASE_PATH]
                         [--project-name PROJECT_NAME]
                         [--vars-files VARS_FILES] [--no-selinux]
                         [--config-file CONFIG_FILE]
                         {run,help,deploy,stop,destroy,restart,init,version,build,install,push,import}
                         ...
ansible-container: error: too few arguments

おわりに

インストールマネージャ使ってのインストールがマネジメント仕切れていないの多いよね ()