AWXでGitHubパブリックリポジトリのPlaybookを実行してみた

どうも、Tです。

先日、AWXがデプロイできたので、こちらが動くのか簡単なPlaybookを実行したので備忘録です。

Oracle Linux9(RHEL9互換)にAWXをデプロイしてみた
どうも、Tです。 AWXのデプロイ手順を確認できたので備忘録です。 前置きがかなり長いので、インストールだけしたい方は「Or...
スポンサーリンク
アドセンス1

環境

AWXを動作させているホストOS

Oracle Linux 9.6(6.12.0-1.23.3.2.el9uek.x86_64)

AWX

24.6.1

やりたいこと

AWX環境でPlaybookを実行をする場合、AWXのawx-taskコンテナの/var/lib/awx/projects/配下にPlaybooxを配置しなければなりません。ただ、playbookを修正・テスト実行するたびにコンテナにファイルを受け渡ししながらするのは面倒です。

今回はGitHubのパブリックリポジトリでPlaybookを管理して、AWXでリポジトリを同期して実行するように構成します。

パブリックリポジトリを使うときは公開して良いファイルか注意してください。
プライベートリポジトリについては、時間ができたら試していこうと思います。
プライベートリポジトリとの同期設定について、下記記事にまとめました。
AWXでGitHubプライベートリポジトリと同期してみた
どうも、Tです。 AWXをGitHubのプライベートリポジトリと同期してみたので備忘録です。 環境 AWX 24.6.1...
今回やりたいことの概要図は下記のようになります。

項目内容
①playbookを作成ローカルのPCでplaybook(yamlファイル)を作成します。
②playbookをPush作成したplaybookをGitHubのパブリックリポジトリにPushします。
③リポジトリ同期AWXからGitHubのパブリックリポジトリを同期します。

同期によりawx-taskコンテナ内にplaybookが配置されます。

④playbook実行AWXでplaybookを実行します。

今回は、簡単な動作確認のため、AWXが動作しているホストOSに接続してplaybookを実行します。

⑤Hello World出力実行結果に「Hello World!」が出力されることを確認します。

AWXの必要最小限の設定を記載していますが、結構なボリュームになっています。下記のような内容は割愛しているので、わからない方はググりながら補完してください。

  • Playbookの書き方や細かな意味
  • Ainsibleは何なのかとか…
  • GitHubの使い方とか…

GitHubパブリックリポジトリ作成

GitHubでパブリックリポジトリを作成します。今回は「test-awx」というリポジトリ名にしました。

リポジトリのURLはAWX側の設定で使うのでメモしておきます。

Playbook準備

Hellow World!のメッセージを表示するPlaybookを作成します。ファイル名はhello.ymlにしました。

---
- hosts: all

  tasks:
    - name: debug
      debug:
        msg: "Hello World!"

作成したPlaybookをGitHubのリポジトリにPushしておきます。

AWX設定

AWXの概要

これからAWXの設定を進めるわけでですが、設定項目が少しわかりにくいので図にしました。

設定方法によって変わってきますが、基本的に必要となる設定は上図のイメージになります。

それぞれの意味をざっくり記載しておきます。

項目説明
ホストAWX(Ansbile)によってPlaybookの対象となるホストの設定です。
インベントリーAnsbileでインベントリーと呼ばれているものと同じです。ホストをまとめる入れ物のようなイメージです。

Playbookを実行する際には、インベントリー単位で対象を指定するようになります(ホスト単位ではありません)。

認証情報Ansbileでは、実行対象のホストに接続して処理を実行します。ホストがLinuxの場合は、SSH接続しますが、その際の認証情報を設定するようになります。
プロジェクトAnsibleでプロジェクトと呼ばれているものとほぼ同じでPlaybookを格納するディレクトリを指します。

AWXでは、プロジェクトの設定でGitHubを指定することにより同期を行えるようになります。

ジョブテンプレートAnsbileの実行単位になります。Playbookの指定もジョブテンプレートで行います。ジョブテンプレートを起動することで、Playbookで指定した処理が実行されます。

これまで設定したインベントリー・認証情報・プロジェクトを紐づける形で設定します。

インベントリー・ホスト設定

最初から設定されているDemo用設定を使ってもいいのですが、せっかくなので手動で設定します。

「リソース」->「ホスト」画面を表示し「追加」->「インベントリーの追加」をクリックします。

名前に「test-inventory」を入力し「保存」をクリックします。

インベントリが作成されたら「ホスト」タブを開き「追加」をクリックします。

「名前」にAWXを稼働させているホストOSのIPアドレスを入力し「保存」をクリックします。

これでインベントリーとホストが設定できました。

「リソース」->「ホスト」画面を開くとホストが作成されていることが確認できます。

認証情報設定

「リソース」->「認証情報」画面を表示し「追加」をクリックします。

下記を設定し画面下部の「保存」をクリックします。

項目設定値
名前任意の名前
認証情報タイプマシン
ユーザー名ホストOSにSSH接続できるユーザー
パスワード上記に指定したユーザーのパスワード
認証情報タイプの「マシン」は、SSH接続を行うことを表します。
10. 認証情報 — Ansible Tower User Guide v3.3.2

プロジェクト設定

「リソース」->「プロジェクト」画面を開き「追加」をクリックします。

下記を設定し「保存」をクリックします。

項目設定値
名前任意のプロジェクト名
ソースコントロールのタイプGit
ソースコントロールのURL作成したGitHubのパブリックリポジトリのURL
ソースコントロールブランチ/タグ/コミットmain

自動的に同期されるため、「最終ジョブステータス」が「成功」になることを確認します。

 初回は自動的に同期されますが、今後GitHubのリポジトリの内容が更新されても自動的に同期してくれません。
GitHubのリポジトリのPlaybookを更新した場合には、上画面の「同期」ボタンをクリックして手動で同期が必要です。

ジョブテンプレート設定

「リソース」->「テンプレート」画面を開き「追加」->「新規ジョブテンプレートの追加」をクリックします。

下記を設定し画面下部の「保存」をクリックします。

項目設定値
名前任意のジョブ名
インベントリーインベントリー設定で作成した名前
プロジェクトプロジェクト設定で作成した名前
Playbookhello.yml
認証情報認証情報設定で作成した名前

Playbookの実行

作成したジョブテンプレートの「起動」をクリックします。作成したジョブテンプレートの内容で、ホストOSにSSH接続しPlaybookが実行されます。

ジョブが完了したのち「出力のリロード」をクリックします。

「”msg”: “Hello World!”」が出力されることを確認できました。

Pythonバージョンに関する警告が出力されます。動作には影響ありませんが、気持ち悪いので解消方法について下記の記事にまとめました。
AWXのAnsible実行時のPython関連のWARNING出力を解消する
どうも、Tです。 AWXでPlaybook実行時に警告が出て、モヤっとするので解消した備忘録です。 環境 コントロールノード A...

参考

まとめ

AWX自体の癖というか内容を理解していなかないと本番で使うのは難しそうですなぁ…。

スポンサーリンク
アドセンス1
アドセンス1
ブログランキング・にほんブログ村へ

シェアする

フォローする