AWX事始め個人的備忘録
1. 想定
やってみること
- ローカル環境で playbook を作成してVMマシンで実行・確認しながら開発を行う。
- 作成した Playbook ファイルを GitLab サーバのブランチへ Push する。
(イベントリーファイルは push しなくても良い) - AWXサーバの設定を行う
- AWXサーバからターゲットサーバへ ansible-play を実施する。
Playbook のあるGitリポジトリ
- git@GitLabサーバ:ansible/getting-started.git
実行する Playbook
- simple-playbook.yml
---
- name: simple-playbook
hosts: all
become: true
tasks:
- name: htop をインストール
yum:
name: htop
state: present
2. 構成
3. AWX設定概要
-
GitLab にある Ansible のリポジトリを AWX サーバへクローンする設定
-
「認証情報」設定 ・・・ AWXサーバとGitLabサーバのSSH接続用キーペアの秘密鍵を登録する
-
「プロジェクト」設定 ・・・ GitLabの情報を登録する
-
AWX からターゲットサーバへ Playbook を実行する設定
-
「認証情報」設定 ・・・ AWXサーバとターゲットサーバのSSH接続用キーペアの秘密鍵を登録する
-
「イベントリー」設定 ・・・ ターゲットサーバの情報を登録する
-
「テンプレート」設定 ・・・ ターゲットサーバに実施する playbook の情報を登録してジョブを作成
4. 設定
4.1 GitLab にある Ansible のリポジトリを AWX サーバへクローンする設定
事前設定・確認
- AWXサーバからGitLabサーバへのSSH接続を許可する
- AWXサーバとGitLabサーバのSSH接続用キーペアを作成/用意する
認証情報の設定 (キーペアの秘密鍵を登録)
認証情報 → 緑の+アイコン
↓
名前:認証情報設定の名前。ここでは「infra-gitlab」とする。
組織:「Default」で
認証情報タイプ:「ソースコントロール」を選択
ユーザー名:ここでは「git」
SCM秘密鍵: AWXサーバとGitLabサーバのSSH接続用キーペアの秘密鍵を登録
↓
「保存」する
プロジェクトの設定 (GitLabの情報を登録)
プロジェクト → 緑の+アイコン
↓
名前:プロジェクトの名前。ここでは「simple-playbook」とする。
組織:Defaultで
SCMタイプ:「Git」を選択
SCM URL:ここでは、git clone で sshプロトコルを使うので、「git@gitサーバのURL:グループ名/プロジェクト名.git」という感じで設定する。
SCM ブランチ/タグ:master
SCM 認証情報:上で作成した「infra-gitlab」を選択
↓
「保存」すると、自動的に git clone が始まる
↓
しばらくして、git clone が正常に完了すると緑色に点灯する
(補足)クローンしたリポジトリが保存される場所
- デフォルトでは、AWXサーバ内の aws_task コンテナ内に保存される。
- 保存場所をAWXサーバの例えば「/var/lib/awx/projects」に変更したい場合は、AWXインストール時に、"awx/installer/inventory" ファイルの project_data_dir の項目で設定する。
(補足)awx_task コンテナ内に保存した場合の確認方法の例
- awx_task コンテナIDを確認
下の実行例では、awx_task のコンテナIDは 60532b491b02awx_task
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
60532b491b02 ansible/awx_task:3.0.1 "/tini -- /bin/sh -c…" 28 hours ago Up 4 hours 8052/tcp awx_task
ab0a300b8b86 ansible/awx_web:3.0.1 "/tini -- /bin/sh -c…" 28 hours ago Up 4 hours 0.0.0.0:80->8052/tcp awx_web
ee85e1253a44 memcached:alpine "docker-entrypoint.s…" 28 hours ago Up 4 hours 11211/tcp memcached
d3b8fc7e2425 ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s…" 28 hours ago Up 4 hours 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp rabbitmq
49f720cc0d5b postgres:9.6 "docker-entrypoint.s…" 28 hours ago Up 4 hours 5432/tcp postgres
- awx_task コンテナ(コンテナIDは 60532b491b02) にログインする
# docker exec -it 60532b491b02 /bin/bash
[root@awx awx]#
- リポジトリ確認
[root@awx awx]# ls /var/lib/awx/projects/
_11__simple_playbook _11__simple_playbook.lock
4.2 AWX からターゲットサーバへ Playbook を実行する設定
事前設定・確認
- AWXサーバからターゲットサーバへのSSH接続を許可する
- AWXサーバとターゲットサーバのSSH接続用キーペアを作成/用意する
認証情報の設定 (キーペアの秘密鍵を登録)
認証情報 → 緑の+アイコン
↓
名前:認証情報設定の名前。ここでは「aws-dev」とする。
組織:「Default」で
認証情報タイプ:「マシン」を選択
ユーザー名:ここでは「ec2-user」
SCM秘密鍵: AWXサーバとターゲットサーバのSSH接続用キーペアの秘密鍵を登録
秘密鍵のパスフレーズ:必要に応じて
↓
「保存」する
イベントリーの設定 (ターゲットサーバの情報を登録)
イベントリー → 緑の+アイコン → イベントリー
↓
名前:イベントリー設定の名前。ここでは「ansible-target」とする。
↓
ホスト → 緑の+アイコン
↓
ホスト名:ターゲットサーバのグローバルIPアドレスを設定する。
組織:ここでは「ansible-target01」とする。
↓
「保存」する
テンプレートの設定 (playbook の情報を登録してジョブを作成)
テンプレート → 緑の+アイコン → ジョブテンプレート
↓
名前:テンプレート設定の名前。ここでは「test-template」とする。
ジョブタイプ:「実行」を選択
イベントリー:「ansible-target」を選択
プロジェクト:「simple-playbook」を選択
PLAYBOOK:「sample-playbook.yml」を選択
認証情報:「aws-dev」を選択
↓
「保存」する