awxをインストールしてみた

本記事はawxをDocker CEにインストールした時の手順をまとめたものです。

## 参考サイト

・awx概要説明
<https://github.com/ansible/awx>
・awxインストール手順
<https://github.com/ansible/awx/blob/devel/INSTALL.md>
→インストール要件について記載されているため必ず参照すること

## awxインストール前設定

awxを構築するために、以下を事前準備する必要があります。
Docker、docker-py、ansible、git、Node.js、npm、GNU Make

### Docker CE、docker-pyインストール

awxはコンテナで構成されているため、Dockerやkubernetesをインストールする必要があります。
先日私が記載した内容をもとにDocker CEをインストールしていきます。
[CentOS 7.6にDocker CEをインストールしてみた](https://qiita.com/matchpon23/items/17596f31b59dbf8af71e)
また、[docker-py README.md](https://github.com/docker/docker-py) を参照し docker-py をインストールします。

Docker CEインストール

```bash
[root@awx ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@awx ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@awx ~]# yum install -y docker-ce docker-ce-cli containerd.io
```

docker-pyインストール

```bash
[root@awx ~]# yum -y install epel-release
[root@awx ~]# yum -y install python-pip

[root@awx ~]# pip install docker

[root@awx ~]# systemctl enable docker
[root@awx ~]# systemctl start docker
```

### ansibleインストール

```bash
[root@awx ~]# yum -y install ansible
```

### gitインストール

updatesリポジトリのgitはバージョンが古い。

```bash
[root@awx ~]# yum info git | grep ^Version
Version     : 1.8.3.1
```

そのため、[IUS](https://ius.io/) からダウンロードする。
最新情報については [Getting Started](https://ius.io/GettingStarted/) を参照すること。

```bash
[root@awx ~]# yum -y install https://centos7.iuscommunity.org/ius-release.rpm
[root@awx ~]# yum --disablerepo=* --enablerepo=ius info git2u | grep ^Version
Version     : 2.16.5
[root@awx ~]# yum --disablerepo=* --enablerepo=ius -y install git2u
```

以下のエラーが表示された場合、
perl-TermReadKey perl-Error libsecret をインストールしてから、git2uをインストールする。

```
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(warnings)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(File::Find)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(lib)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(Getopt::Long)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(Time::Local)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(strict)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(IPC::Open2)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: /usr/bin/perl
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(File::Basename)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(File::Spec)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(Exporter)
Error: Package: git2u-core-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(IPC::Open2)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(Cwd)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(strict)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl >= 5.008
Error: Package: git2u-core-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(warnings)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(Error)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(Error)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: libsecret-1.so.0()(64bit)
Error: Package: git2u-core-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: /usr/bin/perl
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(:MODULE_COMPAT_5.16.3)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl >= 5.008
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(warnings)
Error: Package: git2u-core-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(strict)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(Carp)
Error: Package: git2u-perl-Git-2.16.5-1.ius.centos7.noarch (ius)
           Requires: perl(Fcntl)
Error: Package: git2u-2.16.5-1.ius.centos7.x86_64 (ius)
           Requires: perl(Term::ReadKey)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
```

```bash
[root@awx ~]# yum -y install perl-TermReadKey perl-Error libsecret
[root@awx ~]# yum --disablerepo=* --enablerepo=ius -y install git2u
```

バージョン確認

```bash
[root@awx ~]# git --version
git version 2.16.5
```

### Node.js、npm インストール

最新のインストール手順については、[Node.js README](https://github.com/nodesource/distributions/blob/master/README.md) を参照すること。
Node.jsをインストールするとnpmも同時にインストールされます。

```bash
[root@awx ~]# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
[root@awx ~]# yum install -y nodejs
[root@awx ~]# yum -y install gcc-c++ make
```

バージョン確認

```bash
[root@awx ~]# npm -v
6.4.1
```

再起動

```bash
[root@awx ~]# shutdown -r now
```

## awxインストール

git cloneを実行し、inventoryファイルなどをコピーする。
awx環境 は ansible により構築されます。

```bash
[root@awx ~]# git clone https://github.com/ansible/awx
```

以下はawxに設定される環境情報です。
適宜変更します。(今回は変更せずに実行します。)

```bash
[root@awx ~]# egrep -v '^#' awx/installer/inventory | egrep -v '^$'
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir=/tmp/pgdocker
host_port=80
docker_compose_dir=/var/lib/awx
pg_username=awx
pg_password=awxpass
pg_database=awx
pg_port=5432
rabbitmq_password=awxpass
rabbitmq_erlang_cookie=cookiemonster
admin_user=admin ←awxログインユーザ
admin_password=password ←awxログインユーザ用パスワード
create_preload_data=True
secret_key=awxsecret
```

playbook実行。
unreachable=0    failed=0 であれば正常終了です。

```bash
[root@awx ~]# cd awx/installer/
[root@awx installer]# ansible-playbook -i inventory install.yml

PLAY RECAP **************************************************************************************************************************************************
localhost                  : ok=14   changed=7    unreachable=0    failed=0
[root@awx ~]# 
```

補足情報

```bash
[root@awx installer]# docker ps -a
CONTAINER ID        IMAGE                        COMMAND                  CREATED              STATUS              PORTS                                                 NAMES
b035f8b79d12        ansible/awx_task:3.0.1       "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   8052/tcp                                              awx_task
358b5df53858        ansible/awx_web:3.0.1        "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   0.0.0.0:80->8052/tcp                                  awx_web
b03dc0af759c        memcached:alpine             "docker-entrypoint.s…"   4 minutes ago        Up 4 minutes        11211/tcp                                             memcached
6d8543d032c2        ansible/awx_rabbitmq:3.7.4   "docker-entrypoint.s…"   4 minutes ago        Up 4 minutes        4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp   rabbitmq
8c4fcc317eea        postgres:9.6                 "docker-entrypoint.s…"   4 minutes ago        Up 4 minutes        5432/tcp                                              postgres

[root@awx installer]# docker image ls
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
memcached              alpine              f0c2443012f4        9 days ago          10.2MB
postgres               9.6                 5e8319b0f67b        12 days ago         230MB
ansible/awx_task       3.0.1               885ea0fe022d        4 weeks ago         1.01GB
ansible/awx_web        3.0.1               70ac81469770        4 weeks ago         977MB
ansible/awx_rabbitmq   3.7.4               e08fe791079e        11 months ago       85.6MB
```

## デモ用ジョブ実行確認

1. http://xxx.xxx.xxx.xxx へアクセスする。  
<img width="462" alt="1.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/377697/b2eec51b-fbb0-0c83-340f-7d71d568f0cb.png">
2. [テンプレート]をクリックし、[Demo Job Template]の横のロケットアイコンをクリックし、実行する。  
<img width="947" alt="2.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/377697/883056c8-d98f-a106-9e80-d768846058cd.png">
3. ジョブ画面が起動するため、ステータスが 成功 となっていればOK。  
<img width="939" alt="3.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/377697/06ddd19d-ca0d-1f77-e96d-0c06d793b85f.png">


以上