AWXサーバー内で作成したPlaybookを実行する方法
前回の記事では、AWXサーバーをインストールし、以下の実行手順でAnsibleのPlaybookを実行しました。
①Playbook情報などを記載したAnsibleプロジェクトをGitLabにPush
②AnsibleプロジェクトをGitLabからAWXサーバーにgit pull
③対象サーバーに対してAnsibleプロジェクトのPlaybookを実行
ただこの手順ではAnsibleプロジェクトからPlaybookを実行するために、AWXサーバーからGitLabサーバーに公開鍵認証をして外部接続を可能にする、という工程を挟まなければいけません。
要件によってはSCMサーバー(GitLabサーバー等)と接続せずに、AWXサーバー内で、Ansibleプロジェクトを管理したいということもあると思います。
そこで今回は、AWXサーバー内でAnsibleプロジェクトを作成し、対象サーバーにPlaybookを実行する手順についてまとめていきたいと思います。
前提条件
-
前回の記事で行った、設定が完了している
クローン情報がどこに保存してあるのか確認
まず初めに、前回GitLabからクローンしてきたAnsibleプロジェクトの情報がどこに保存されているの確認しておきます。
デフォルトの保存先は、AWXサーバー内で立ち上げっているawx_taskコンテナの、/var/lib/awx/projects/です。
[root@awx ~]# docker exec -it awx_task /bin/bash
bash-4.4# ls /var/lib/awx/projects/
_8__ansible_test_lamp _8__ansible_test_lamp_.lock
bash-4.4# ls /var/lib/awx/projects/_8__ansible_test_lamp
CODE_OF_CONDUCT.md group_vars README.md site.yml
CONTRIBUTING.md LICENSE roles
AWX構築のinventoryファイルの変更
当初、先ほど確認したawx_taskコンテナ内の/var/lib/awx/projects/に、Ansibleプロジェクトを作成すれば今回の設定が可能だと思っていました。
しかしこれだと、AWXのWebUIのプロジェクト項目(Ansibleプロジェクトの読込先を設定する場所)で読み込まれません。
デフォルトでは、awx_taskコンテナ内の/var/lib/awx/projects/を、awx_webをコンテナにマウントされない設定になっているからです。
実際にAWXを構築した際のPlaybookをみてみると、awx_taskとawx_webの設定のところで以下のような記載があります。
volumes: >
{{
[project_data_dir + ':/var/lib/awx/projects:rw'] if project_data_dir is defined else []
+ [ca_trust_dir + ':/etc/pki/ca-trust:ro'] if ca_trust_dir is defined else []
}}
この記載で、project_data_dirが未定義の場合、空の配列となっているようです。
マウント設定をするためには、AWX構築をinventoryファイルでproject_data_dirの定義をしなければいけないので、その記載をします。
マウント先がデフォルトのディレクトリ先で良い場合は、project_data_dirのコメントアウトを外すだけで大丈夫です。(別にマウント先を指定する場合は適宜変更が必要)
[root@awx ~]# cd ~/awx/installer
[root@awx installer]# vi inventory
# 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
project_data_dir=/var/lib/awx/projects
コメントアウトでは丁寧に、「AWXのProjectの保存先にアクセスが必要な場合、以下のコンテナのボリューム設定(マウント設定)をしてください」と書いてありますね。
その後、AWXのplaybookを再実行して修正を反映させます。
[root@awx installer]# ansible-playbook install.yml -i inventory
AWXサーバー内に手動作成したPlaybookを実行
マウントの設定が終わったので、最後にAWXサーバー内に手動作成したPlaybookが実行できるかテストしていきたいと思います。
今回は新規Projectとしてtest_projectというものを作成し、slパッケージをインストールするinstall-sl.ymlというPlaybookを作成しました。
作成先は、project_data_dirでマウント先として指定した、/var/lib/awx/projects/になります。
[root@awx ~]# docker exec -it awx_task /bin/bash
bash-4.4# cd /var/lib/awx/projects/
_8__ansible_test_lamp _8__ansible_test_lamp_.lock
bash-4.4# mkdir test_repo && cd test_repo
bash-4.4# vi install-sl.yml
---
- name: test_project_playbook
hosts: all
become: true
tasks:
- name: install sl
yum:
name: sl
state: present
Ansibleプロジェクトの作成が終わったら、AWXにアクセスします。
プロジェクトタブの、緑のプラスボタンの新規作成をクリックしてください。
マウントの設定がうまくいっていれば、SCMタイプを手動に選択した際に、PLAYBOOKディレクトリという項目が表示されるようになります。
ここでは名前をtest-project、組織をDefault、SCMタイプを手動、PLAYBOOKディレクトリtest-projectに選択します。
保存したのちに、テンプレートタブで新規のテンプレートを作成します。
プロジェクトはさきほど作成したtest-projectを選択し、PLAYBOOKにinstall-sl.ymlを選択します。
また名前をtest-intall-sl、ジョブタイプをチェック、認証情報を以前の記事で作成したtarget-server1に設定します。
最後にこのテンプレートのジョブを実行し、以下のように成功したら完了です。
参考URL
https://sky-joker.tech/2018/03/21/awx%E3%81%ABvarlibawxprojects%E3%81%8C%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6/
https://note.com/shift_tech/n/n5e420a1fec8c
Author And Source
この問題について(AWXサーバー内で作成したPlaybookを実行する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/rui-watanabe/items/e0546a2e95ceddcc7b37著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .