URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

AWXのインストール時に"docker-compose.yml"を生成する

 お仕事でAnsibleを使っているけど、もっと有効活用したくてAWXに手を出しています。

 AWXのインストール方法はインストールガイドの通りですが、"inventory"ファイルのパラメータを設定することで"docker-compose.yml"を生成することができます(デフォルトは無効)。
 しかし、CentOS 7の環境でこのパラメータを有効にしたところインストールに失敗してしまい、成功するまで手間取りました。
 その備忘録です。

エラーの内容

 当初、AWXのインストールに必要となるパッケージ(ansibleやdocker等)は全てEPELレポジトリより"yum"でインストールしていました。
 その上で"inventory"ファイルに"use_docker_compose=true"を設定してインストールを実行したところ、下記のエラーになりました。


"Unable to load docker-compose. Try `pip install docker-compose`."


 設定に従って"/var/lib/awx/docker-compose.yml"ファイルは作成されましたが、これを使ってのコンテナ起動に失敗したようです。"docker-compose"はインストールしてあるのですが…。
 これを解消するために"docker-compose"をアンインストールして"pip"で入れ直したりしましたが、やはり駄目でした。

 そんなこんなで試行錯誤した結果、"ansible"も"pip"でインストールしたところうまくいきましたのでまとめです。

手順

 CentOS 7.5を最小構成でインストールしたものから始めます。
 まずは"yum"で必要なパッケージをインストール。

# yum -y install epel-release
# yum -y install docker python-pip git

 "pip"が使えるようになったら、お約束のアップグレードをしてから"ansible"と"docker-compose"をインストール。

# pip install -U pip
# pip install ansible docker-compose

 GitHubからAWXのレポジトリをクローンしてして、"inventory"ファイルの設定を変更。
 (ここでは"use_docker_compose=true"のみ変更しているけど、必要に応じて他のパラメータも調整)

# git clone https://github.com/ansible/awx.git
# cd ./awx/installer
# sed -i "s/# \(use_docker_compose\)\=.*$/\1\=true/g" ./inventory

 Deckerサービスを起動

# systemctl enable docker
# systemctl start docker

 AWXをインストール

# ansible-playbook -i inventory install.yml

 以上です。
 これで生成された"/var/lib/awx/docker-compose.yml"を使ってAWX関連コンテナの起動/停止を一括でできます。
 複数のコンテナを連携させる環境だと"docker-compose"は個人的に手放せません。

 なお、"pip"でインストールしたAnsibleは"yum"の場合と違って既定では"/etc/ansible/ansible.cfg"を読まないので注意する。バージョンも基本的に新しいはず。

### "pip"でインストールした場合 ###
# ansible --version
ansible 2.7.0
  config file = None
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible   executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

### "yum"でインストールした場合 ###
# ansible --version
ansible 2.6.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible   executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

 AWXもバージョンによっていろいろと不具合もあるし、仕事で使うならそれなりに覚悟は必要ですね。できれば将来的にAnsible Towerを導入したいけど、予算取れないだろうな~。
 先日もこのバグに四苦八苦していました。

 まあ、でも今の仕事ならせめてAnsibleは積極的に使っていきたい。