LoginSignup
0
0

More than 3 years have passed since last update.

AWXサーバー内で作成したPlaybookを実行する方法

Last updated at Posted at 2020-07-01

前回の記事では、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に選択します。

demo

保存したのちに、テンプレートタブで新規のテンプレートを作成します。

プロジェクトはさきほど作成したtest-projectを選択し、PLAYBOOKにinstall-sl.ymlを選択します。

また名前をtest-intall-sl、ジョブタイプをチェック、認証情報を以前の記事で作成したtarget-server1に設定します。

demo

最後にこのテンプレートのジョブを実行し、以下のように成功したら完了です。

demo

参考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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0