Ansibleはコマンドベースで実行するツールとなるが、AnsibleをGUIで操作するためのツールとしてAWXと呼ばれるものが存在する。AWXはRed Hat社のAnsible Towerのコミュニティ版と呼べる存在で、無償で利用することができる。
今回、AWXをインストールしてみた。ちょっと複雑な箇所もあるため、インストール手順を時系列に記載しまとめることにする。
環境
環境は以下の通り。AWXはDockerにて動作させることを前提に設計されているらしい。なお、私はDocker初心者となる。- CentOS : 7.5
- Docker : 1.13.1
- Ansible : 2.4.2.0
- AWX : 1.0.7.2
AWXのインストール手順
1. 前提パッケージのインストール
前提パッケージをyumにてインストールする。# yum install git docker docker-python
Dockerに関しては起動設定をしておこう。
# systemctl start docker
# systemctl enable docker
2. 事前準備
SELinuxが動いていると、AWXからPlaybook参照時に失敗するようなので、SELinuxは停止しておく。なお、ここでOS再起動して必ずSELinuxを無効化すること。そうしないと、OS再起動時にコンテナ起動ができなくなる。# vi /etc/sysconfig/selinux
------------------------------
SELINUX=disabled
------------------------------
# reboot
私の自宅検証環境は、インターネットアクセス時にプロキシを経由する環境となるため、Dockerのプロキシ設定を実施しておく。
# mkdir /etc/systemd/system/docker.service.d
# vi /etc/systemd/system/docker.service.d/http-proxy.conf
------------------------------
[Service]
Environment="HTTP_PROXY=http://192.168.33.23:8080/"
Environment="NO_PROXY=localhost,127.0.0.0/8,docker-registry.somecorporation.com"
------------------------------
# systemctl restart docker
なお、この後手順として出てくるが、AWXのinventoryファイルでも、プロキシ設定をする必要がある。
3. AWXをgitにて入手
gitにてAWXを入手する。9/16時点の最新版は1.0.7のようだ。# git clone https://github.com/ansible/awx.git
------------------------------
Cloning into 'awx'...
remote: Counting objects: 169687, done.
remote: Compressing objects: 100% (52/52), done.
remote: Total 169687 (delta 48), reused 51 (delta 28), pack-reused 169607
Receiving objects: 100% (169687/169687), 196.17 MiB | 4.82 MiB/s, done.
Resolving deltas: 100% (131154/131154), done.
------------------------------
4. AWXをインストール
AWXのインストール自体もAnsibleで実施する。ただし、そのままインストール用のPlaybookを実行するとプロキシ環境では失敗するため、inventoryファイルの設定修正を行う。合わせて、デフォルトではDBデータの保存ディレクトリが/tmp配下となっているが、/tmpはCentOS 7では1週間に1回古いファイルの削除処理が入る仕様であり、結果としてAWXが動作しなくなる事象が発生することから、/tmpからディレクトリを変更しておく。
# mkdir /pgdocker
# cd awx/installer/
# vi inventory
------------------------------
# Common Docker parameters
postgres_data_dir=/pgdocker ←★/tmp/pgdockerから変更
# Proxy
http_proxy=http://192.168.33.23:8080/ ←★追加
https_proxy=http://192.168.33.23:8080/ ←★追加
# AWX project data folder. If you need access to the location where AWX stores the projects
# it manages from the docker host, you can set this to turn it into a volume for the container.
project_data_dir=/var/lib/awx/projects ←★アンコメント
------------------------------
install.ymlを実行してAWXをインストールする。5分もあれば完了する。
# ansible-playbook -i inventory install.yml
------------------------------
PLAY [Build and deploy AWX] ****************************************************
TASK [check_vars : include_tasks] **********************************************
skipping: [localhost]
TASK [check_vars : include_tasks] **********************************************
included: /root/awx/installer/roles/check_vars/tasks/check_docker.yml for localhost
~(中略)~
TASK [local_docker : Start the containers] *************************************
skipping: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=12 changed=5 unreachable=0 failed=0 ←★failedがないことを確認
------------------------------
5. インストール後確認
インストール結果を確認する。まずdocker imagesコマンドで、イメージを確認する。Docker初心者なのでよくわかっていないが、以下の5行が表示されていればよいようだ。# docker images
------------------------------
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ansible/awx_task latest 28707c39108a 7 hours ago 1.03 GB
docker.io/ansible/awx_web latest 920f871452be 7 hours ago 997 MB
docker.io/postgres 9.6 506063568b80 3 days ago 237 MB
docker.io/memcached alpine b40e8fa7e3e5 5 weeks ago 8.69 MB
docker.io/ansible/awx_rabbitmq 3.7.4 e08fe791079e 4 months ago 85.6 MB
------------------------------
AWXのコンテナの稼働状況は、docker psコマンドにて確認できる。ここに表示されていない場合は正常に起動していない。
# docker ps
------------------------------
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
d0aaf8e6453c ansible/awx_task:latest "/tini -- /bin/sh ..." 29 hours ago
Up 23 hours 8052/tcp awx_task
362b111bf0d5 ansible/awx_web:latest "/tini -- /bin/sh ..." 29 hours ago
Up 23 hours 0.0.0.0:80->8052/tcp awx_web
51bffae467fc memcached:alpine "docker-entrypoint..." 29 hours ago
Up 23 hours 11211/tcp memcached
e4354159640c ansible/awx_rabbitmq:3.7.4 "docker-entrypoint..." 29 hours ago
Up 23 hours 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp rabbitmq
e92b95572075 postgres:9.6 "docker-entrypoint..." 29 hours ago
Up 23 hours 5432/tcp postgres
------------------------------
6. AWXで実行するPlaybookを配置する
Playbookは/var/lib/awx/projectsディレクトリ配下にさらにディレクトリを作成し配置することで、AWXが参照することができる。念のためディレクトリが作成されていることを確認。
# ls -ld /var/lib/awx/projects/
------------------------------
drwxr-xr-x. 2 root root 6 8月 14 10:36 /var/lib/awx/projects/
------------------------------
今回は依然作ったPlaybookを適当に配置しておく。
# mkdir /var/lib/awx/projects/setup_ntpd
# cp /root/setup_ntpd.yml /var/lib/awx/projects/setup_ntpd
7. AWXにログイン
それではAWXにログインしてみよう。ブラウザにて以下情報にてログインできるはずだ。- ログイン先 : http://<IPアドレス>/
- ID : admin
- Pass: password
ログインするとこんな感じ。
8. AWXでPlaybookを実行してみる
今回の主目的はインストール手順の紹介となるため、細かい手順は割愛するが、おおむね以下手順で実施する。
- 認証情報作成:Ansible実行時の管理対象サーバーのID/Password情報を登録
- プロジェクト作成:Playbook配置場所の設定。ローカルディレクトリやSVNやGitを指定できる。ローカルディレクトリの場合は、/var/lib/awx/projects/配下にディレクトリを作ってPlaybookを配置する
- インベントリー作成:管理対象サーバーを登録
- ジョブテンプレート作成:Ansibleを実行するためのジョブを作成
- ジョブを実行:作成したジョブを実行する
ジョブの実行結果は以下のような画面で確認できる。
まとめ
以上にてAWXのインストールは完了となる。私の周りではあまり評価がよろしくないAWX (Ansible Tower) だが、個人的にはそこまで悪いものではなさそうに見える。今後、詳細に使い方を確認していこうと思う。なお、実際に使っている中で、以下2点の問題が発生している。
- 再起動するとAWXが起動しなくなる
- AWXのジョブテンプレート作成時に、認証情報が「Invalid search term entered. GET returned: 400 無効な credential_type ID: NaN」でエラーになって選択できない
0 件のコメント:
コメントを投稿