AWX(Ansible Works)のインストール手順を示します。AWXは、Ansibleに対してWebインターフェース, REST API, タスクエンジンの機能を提供するプロジェクトです。AWXはAnsible Towerのアップストリームに当たるプロジェクトで、Ansible TowerはAWXの派生プロジェクトの1つです。
公式ドキュメント
AWXの公式資料は、GitHubのREADME.mdをを参照ください。
https://github.com/ansible/awx
インストール方法概要
前提条件
AWXは下記ソフトウェア群がインストールされている事を前提としています。
- Ansible Requires Version 2.8+
- Docker
- docker Python module (docker-py, docker-compose)
- GNU Make
- Git Requires Version 1.8.4+
- Python 3.6+
対応プラットフォーム
対応プラットフォームは以下の通りです。
- OpenShift
- Kubernetes
- Docker Compose
この資料では最もインストールが簡単なDocker Composeを使用する場合を紹介します。
AWXのインストール
リポジトリのクローン
AWXのリポジトリをクローンします。
git clone -b 15.0.0 https://github.com/ansible/awx.git
AWXのインストール
AWXのインストールはAnsible playbookによって提供されます。以下のコマンドでAWXのインストールができます。
cd awx/installer ansible-playbook -i inventory install.yml
インストールに成功すれば以下4つのコンテナが起動します。
# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c778cd639c42 ansible/awx:14.0.0 "tini -- /usr/bin/la…" 7 minutes ago Up 7 minutes 8052/tcp awx_task 718975c93f47 ansible/awx:14.0.0 "tini -- /bin/sh -c …" 7 minutes ago Up 7 minutes 0.0.0.0:80->8052/tcp awx_web 519cebef4137 postgres:10 "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 5432/tcp awx_postgres 00d6723b8ebf redis "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 6379/tcp awx_redis
httpで接続可能である事を確認します。
# curl -I http://localhost/ HTTP/1.1 200 OK Server: nginx Date: Wed, 12 Aug 2020 06:34:55 GMT Content-Type: text/html; charset=utf-8 Content-Length: 11460 Connection: keep-alive Vary: Accept-Language, Origin, Cookie Content-Language: en X-API-Total-Time: 0.031s Strict-Transport-Security: max-age=15768000 Content-Security-Policy: default-src 'self'; connect-src 'self' ws: wss:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' *.pendo.io; img-src 'self' *.pendo.io data:; report-uri /csp-violation/ X-Content-Security-Policy: default-src 'self'; connect-src 'self' ws: wss:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' *.pendo.io; img-src 'self' *.pendo.io data:; report-u ri /csp-violation/ X-Frame-Options: DENY
AWXへの接続
AWXへの「接続ユーザ/パスワード」は、デフォルト設定の場合「admin/password」です。デフォルトの設定はinventoryファイルに定義されています。
# cat inventory | grep ^admin admin_user=admin admin_password=password
ブラウザで接続すると以下のような画面が表示されます。
ログインに成功すると以下のような画面が表示されます。
非公式情報
CentOS8 Dockerインストール
2020年8月時点、CentOS 8.X系にDockerをインストールするのはひと手間が必要です。以下にインストールするコツのメモ書きを残します。
docker-ceのリポジトリからDockerをインストールしようとすると、containerd.ioの依存関係を解決する事ができません。そこで、containerd.ioを「CentOS7」のリポジトリからインストールします。
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
docker-ceをインストールします。
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo dnf install docker-ce
dockerを有効にします。
systemctl enable --now docker
python docker-compose
dockerとdocker-pyとdocker-composeは依存関係があり、同時にインストールしないと以下のようなエラーが発生する事があります。
TASK [local_docker : Start the containers] ********************************************************************************************************************************************************** fatal: [localhost]: FAILED! => {"changed": false, "msg": "Cannot have both the docker-py and docker python modules (old and new version of Docker SDK for Python) installed together as they use the same namespace and cause a corrupt installation. Please uninstall both packages, and re-install only the docker-py or docker python module (for ansible171.gokatei.go's Python /usr/bin/python3). It is recommended to install the docker module if no support for Python 2.6 is required. Please note that simply uninstalling one of the modules can leave the other module in a broken state."}
このエラーが発生した場合はdocker-composeの再インストールを試みてください。
pip3 uninstall docker docker-py docker-compose pip3 install docker-compose
デフォルトユーザでログインできない
AWXのバージョンによってはデフォルト設定のユーザ名とパスワードでログインできない事もあります。このような場合はinventoryファイルを編集してユーザ名とパスワードを変更してください。
# grep ^admin awx/installer/inventory admin_user=admin admin_password=P@ssw0rd