9月頃にAnsible Towerのアップストリーム版のAWXが出ました。
何かのタイミングで某社のプロダクト担当の方に質問したときは、早くとも年度内位になるかもと言われていましたが、それよりも早くアップストリーム版がリリースされたようです。
Ansible Tower自体もクライアントnode数、一部機能などが制限されている無料トライアル版もありましたが、色々試したり検証用途としてはAWXが良さそうですね。
現在の予定では2週間おきにリリースされるみたいです。
AWXに関するFAQはこちら
本番環境では推奨しないとか色々書いてあります。
The AWX project
インストール要件
公式ドキュメントはこちら github.com
ドキュメントを見るとDocker以外にも以下が必要らしい。
Ansibleのバージョンは2.4以上が必要なんですね。
以下の環境で入れてみました
# ansible --version ansible 2.4.1.0 # docker --version Docker version 17.06.2-ce, build cec0b72 # cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
AWX本体のインストール作業
docker-py
のインストールなどは省きます。ちなみにdocker-py
はpipでinstall可能です。
awxのレポジトリをclone
して、installer
ディレクトリに行きます
# git clone https://github.com/ansible/awx.git # cd awx/ # ls API_STANDARDS.md config DCO_1_1.md installer ISSUES.md Makefile MANIFEST.in pytest.ini requirements setup.py tools awx CONTRIBUTING.md docs INSTALL.md LICENSE.md manage.py nodemon.json README.md setup.cfg shippable.yml tox.ini # cd installer/ # ls -l total 32 -rw-r--r-- 1 root root 171 Nov 7 13:43 build.yml drwxr-xr-x 3 root root 4096 Nov 7 13:43 check_vars drwxr-xr-x 5 root root 4096 Nov 7 13:43 image_build drwxr-xr-x 3 root root 4096 Nov 7 13:43 image_push -rw-r--r-- 1 root root 300 Nov 7 13:43 install.yml -rw-r--r-- 1 root root 3050 Nov 7 13:43 inventory drwxr-xr-x 3 root root 4096 Nov 7 13:43 local_docker drwxr-xr-x 5 root root 4096 Nov 7 13:43 openshift #
playbookを実行する前に、inventory
を確認して変更が必要なパラメータは予め変更しましょう。
パラーメータの項目については公式ドキュメントを参照すると細かく書かれています。
覚悟が決まったらplaybook実行
# ansible-playbook -i inventory install.yml
docker registry使う人は以下で(inventoryにregistry設定項目がある)
# ansible-playbook -i inventory -e docker_registry_password=password install.yml
環境によると思いますが、Ansibleの実行結果は以下の様になりました。
PLAY RECAP ****************************************************************** localhost : ok=12 changed=5 unreachable=0 failed=0
playbookが走り切ったら、dockerの状況を見てみましょう。
起動が必要な物は公式ドキュメントにも実行結果が載っているので参考にします。
特に手を加えていない場合はコンテナが5個起動の模様。
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b894eb7dc13 ansible/awx_task:latest "/tini -- /bin/sh ..." 2 minutes ago Up 2 minutes 8052/tcp awx_task ffd321ab0817 ansible/awx_web:latest "/tini -- /bin/sh ..." 2 minutes ago Up 2 minutes 0.0.0.0:80->8052/tcp awx_web 56bc28994eb2 memcached:alpine "docker-entrypoint..." 3 minutes ago Up 3 minutes 11211/tcp memcached 005e09e5289c rabbitmq:3 "docker-entrypoint..." 3 minutes ago Up 3 minutes 4369/tcp, 5671-5672/tcp, 25672/tcp rabbitmq 8e78cf794574 postgres:9.6 "docker-entrypoint..." 4 minutes ago Up 4 minutes 5432/tcp postgres #
上記の確認ができましたら、Webインタフェースアクセス前にタスクの状況を確認とドキュメントに書いてあるので状況を確認します。試しては無いですがDBのマイグレーションなどが走っているので完了するまでWebインタフェースにアクセスはできたとしてもログインはできないと思われます。
# docker logs -f awx_task Using /etc/ansible/ansible.cfg as config file [DEPRECATION WARNING]: The sudo command line option has been deprecated in favor of the "become" command line arguments. This feature will be removed in version 2.6. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. 127.0.0.1 | SUCCESS => { "changed": true, "db": "awx", "failed": false } Operations to perform: Synchronize unmigrated apps: solo, api, staticfiles, messages, channels, django_extensions, ui, rest_framework, polymorphic Apply all migrations: sso, taggit, sessions, djcelery, sites, kombu_transport_django, social_auth, contenttypes, auth, conf, main Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: ** 略 **
以下が出力されれば準備は完了の様です。
>>> <User: admin> >>> Default organization added. Demo Credential, Inventory, and Job Template added. Successfully registered instance awx (changed: True) Creating instance group tower Added instance awx to tower (changed: True)
実際にサーバのアドレスの80番にアクセスして、Webインタフェースが表示されログインできれば導入は完了です。
IDと初期パスワードは、adminのpasswordです。
Ansible Tower時のロゴは全く忘れてしまいましたが、なかなか良いロゴ。
Ansible TowerではEnterpriseライセンス以上でしか使えない、Surveyも使えそうですね。
よく見てみるとローカライズまでされています(コミュニティの方に感謝ですね)。
近いうちに、検証してみようと思います。