Ansible AWXのホストとしてdocker-composeでCentOS7を追加する

# 概要
docker-compose で動作している AWX から、同じく docker-compose で動作する CentOS7 を5台追加します。

# 前提
Ansible AWX が動作していること。

# 手順
以下の docker-compose.yaml を実行します。
この時、docker network ls で事前に確認していた awx が
動作するネットワークにCentOS7 を参加させることで AWX と
CentOS7 の間で通信が可能になります。

```bash
# docker network ls
NETWORK ID          NAME                 DRIVER              SCOPE
f85aa36a3ee1        awxcompose_default   bridge              local ★ AWX のネットワーク
af68638ee18c        bridge               bridge              local
ba0fb50601f0        host                 host                local
812f8bdace1c        none                 null                local
# 
```

各CentOS7のネットワーク設定と、

```
    networks:
      - awxcompose_default
```

末尾のネットワーク自身の設定がポイントです。

```
networks:
    awxcompose_default:
      external: true
```

docker-compose.yaml は以下の通りです。

```yml:docker-compose.yaml
version: '2'
services:
  centos7-1:
    container_name: centos7-1
    hostname: centos7-1
    image: solaris64sparc/centos7:systemd-sshd-selinux
    ports:
      - "10001:22"
    privileged: true
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    networks:
      - awxcompose_default

  centos7-2:
    container_name: centos7-2
    hostname: centos7-2
    image: solaris64sparc/centos7:systemd-sshd-selinux
    ports:
      - "10002:22"
    privileged: true
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    networks:
      - awxcompose_default

  centos7-3:
    container_name: centos7-3
    hostname: centos7-3
    image: solaris64sparc/centos7:systemd-sshd-selinux
    ports:
      - "10003:22"
    privileged: true
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    networks:
      - awxcompose_default

  centos7-4:
    container_name: centos7-4
    hostname: centos7-4
    image: solaris64sparc/centos7:systemd-sshd-selinux
    ports:
      - "10004:22"
    privileged: true
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    networks:
      - awxcompose_default

  centos7-5:
    container_name: centos7-5
    hostname: centos7-5
    image: solaris64sparc/centos7:systemd-sshd-selinux
    ports:
      - "10005:22"
    privileged: true
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    networks:
      - awxcompose_default

networks:
    awxcompose_default:
      external: true

```

#docker-compose で実行

次のように、フォルダを作成し docker-compose.yaml を配置し CentOS7 を起動させます。

```
# mkdir centos7

# vi docker-compose.yaml
→ 上記 docker-compose.yaml を貼り付け。

#docker-compose up -d

```


# AWX からホストを追加
ログイン後、画面左側メニューから「インベントリー」をクリックし、「＋」をクリックします。

![スクリーンショット (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/814c6f38-8f48-85c0-a8b0-16374adaf812.png)

「インベントリー」と「スマートインベントリー」が表示されるので
「インベントリー」をクリックします。

![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/6f9f728a-6232-f847-a7d4-f125798516e0.png)

新しくインベントリを作成するため、「新規インベントリー」画面で、
「名前」に centos7 を入力、「組織」は「Default」を選択し、
「保存」をクリックします。

![スクリーンショット (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/8b71662c-d04c-ae0a-04e2-0cff55c772c7.png)

「ホスト」をクリックします。

![スクリーンショット (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/878f3981-fc91-4ef8-e8ba-38c1cfb65790.png)

ホストに対象を追加するため「＋」をクリックします。

![スクリーンショット (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/1571df6c-1db0-6c9c-345a-cddb8146f58f.png)

「ホストの作成」画面で「ホスト名」に「centos7-1」と入力し、「保存」をクリックします。
ここで指定するホスト名は上記のdocker-compose.yaml で指定した hostname を指定します。
docker-compose 内では名前解決ができるので、それを利用しています。

![スクリーンショット (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/19de137a-1a8f-4421-92d1-0fb85a80358d.png)

ホストの追加ができたら「ホスト」をクリックして一覧に戻ります。

![スクリーンショット (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/9578b75a-3d05-b7f5-94de-bca777896423.png)

一覧に「centos7-1」が追加されていることが確認出来たら、
再び「＋」をクリックして残りのホストも追加していきます。

![スクリーンショット (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/d8347c5b-26ce-019b-16df-6b45e3052261.png)

以下のように、docker-compose.yaml で定義した CentOS7 が追加できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/eef3a203-40ee-8c32-bdf0-e7122a9b2c9b.png)

# 認証情報の登録
次に、登録したホストの認証情報を追加します。
画面左側メニューから「認証情報」をクリックし、「＋」をクリックします。

![スクリーンショット (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/573e2997-c916-1bcf-2a9b-d14ea419c9dc.png)

「新規の認証情報」画面で、「名前」に「CentOS7 root」、「認証情報タイプ」に「マシン」、
「ユーザ名」にroot、「パスワード」に「P@ssw0rd!」を入力し、画面右下の「保存」を
クリックします。

※ この CentOS7 の root のパスワードは「P@ssw0rd!」に設定されています。

![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/c32641ec-67ae-2fad-cf89-dcab7778e7ee.png)

以上で認証情報の登録は終了です。

#インベントリに対してコマンドを実行してみる

ログイン後、画面左側メニューから「インベントリー」をクリックし、「centos7」をクリックします。

![スクリーンショット (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/b350ad99-ede7-e463-b7c6-74ad9c82a747.png)

「ホスト」をクリックします。

![スクリーンショット (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/a245b9d0-7839-4191-c4e4-d1d21c95020f.png)

「centos7-1」～「centos7-5」にチェックを入れ、「コマンドの実行」をクリックします。

![スクリーンショット (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/1396552c-aeea-b31b-b2a5-14dc953757b5.png)

「コマンドの実行」画面で、
「モジュール」で「shell」を選択、「引数」に「uname -n」を入力し、
「マシンの認証情報」で「CentOS7 root」を選択し、「起動」をクリックします。

![スクリーンショット (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/51856ad4-2767-fcd7-d0d1-1824aeb11aa3.png)

実行結果が表示され、各CentOS7のホスト名が表示されています。
これで疎通の確認ができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162569/902c9c23-a6ef-9be0-5272-2be53395a5e8.png)

以上です。