AWXの機能と使い方

こんにちは。自動化エンジニアの水谷です。

前回「AnsibleAWXの構築方法」という記事を書かせていただきましたので、その続きとしてAWXの機能と簡単な使い方について書いてみたいと思います。

AWXの機能

AWXは下のようなWeb UIでAnsibleのPlaybookやインベントリーを管理したり、スケジューラー機能を使ってPlaybookを定期実行たり、またその実行結果を確認したりすることができます。

図1

主な機能を列挙すると以下のようになります。

• Playbookを「プロジェクト」として扱い、ローカルドライブにあるPlaybookだけでなくGitなどのSCMツールからPlaybookも同等に扱える
• Playbookの実行を「テンプレート」として定義し、実行時の変数の指定、スケジュール実行、実行後の通知方法などを指定できる
• インベントリーやホストマシンの情報をYamlファイルではなくUIで管理し、Web UI上で追加や変更が可能
• 認証情報をオブジェクトとして作成しておくことで、テンプレート毎に認証情報を記述する手間を省く
• ジョブの実行履歴をダッシュボードから確認でき、必要であれば簡単に詳細を見ることもできる
• AWXを使用するユーザーを管理できる

AWXの基本的な使い方

AWXで手持ちのPlaybookを動作させるまでの手順を簡単に書きたいと思います。

プロジェクトの作成

AWXにおいて個々のPlaybookは「プロジェクト」として管理されます。
プロジェクトの一覧表示したり、新たにプロジェクトを作成するには、AWXの左のメニューから「プロジェクト」をクリックします。

図2

AWXをインストールした直後では、「Demo Project」のみが存在しています。右上にある緑色の「+」アイコンをクリックすると新規プロジェクト作成画面に進みます。

図3

プロジェクトを作成する前に、Playbookをプロジェクトフォルダにコピーしておきます。プロジェクトフォルダはAWXをインストールする際のInventory内でproject_data_dirとして指定したフォルダになり、デフォルトでは/var/lib/awx/projects/になります。
ここでは、/var/lib/awx/projectsの下に「testproj1」というフォルダを作成し、そのに「site.yml」というPlaybookをコピーしたとして話を進めます。
さて、下がプロジェクトの作成画面です。

図4

「名前」にプロジェクト名を入力し、「SCMタイプ」で「手動」を選択します。

図5

「PLAYBOOKディレクトリー」ドロップダウンが表示されますので、そこで先ほど作成した「testproj1」を選択します。
その後「保存」ボタンを押して、一旦プロジェクトを保存しておきます。

次に認証情報を作成しましょう。
実際には認証情報を作らずに、後述する「テンプレート」を作成する際に「ansible_user: mizutani」などの変数として記述することもできますが、一度認証情報を作っておけば、今後たくさんPlaybookを作って実行する際に楽になります。
まずは、左のメニューから「認証情報」をクリックします。

図6

「名前」と「説明」欄を適当に入力し、「認証情報タイプ」で「ネットワーク」を選びます。様々な認証方法が用意されていますが、「ネットワーク」を選ぶと、よくあるユーザー名とパスワードの認証方法となります。

図7

「ユーザー名」と「パスワード」を入力して「保存」ボタンを押します。

図8

続いてインベントリーの作成です。
左メニューの「インベントリー」をクリックし、「+」アイコンをクリックして、新たにインベントリーを追加作成します。

図9

「インベントリー」と「スマートインベントリー」の選択ができますが、ここでは「インベントリー」を選んでください。ちなみに、スマートインベントリーは複数のPlaybookを連続実行したいような場合に使用します。

図10

「名前」と「説明」を適当に入力します。

図11

続いて「ホスト」ボタンを押し、「+」ボタンを押すことで、Playbookを実行する対象のPCを登録していきます。

図12

「ホスト名」には対象PCのネットワーク名あるいはIPアドレスを入力します。「説明」欄も記述しておけば後からどのPCのことかわかりやすいでしょう。
入力が終わったら「保存」ボタンを押します。
複数のPCに同時に同じPlaybookを実行したい場合は、ここで続けてホストを追加していきます。

図13

インベントリーの作成が終わりましたら、Playbook実行のための設定の最終段階である「テンプレート」の作成になります。
「テンプレート」という名前にはやや違和感がありますが、これが「実行タスク」のようなものと思っていただければよいかと思います(やや正確ではありませんが……)。
さて、左メニューの「テンプレート」をクリックして「+」ボタンを押すと次のような画面になりますので、どんどん入力していきます。

図14

ここでは、「名前」、「説明」を入力し、「インベントリー」で先ほど作成したインベントリーを選択し、「プロジェクト」にも最初に作成したプロジェクトを選択、「PLAYBOOK」の欄には、選択したプロジェクト内で実行したいPlaybookファイル(Yamlファイル)を選択します。また、「認証情報」の欄にも、先ほど作成した認証情報を選択しています。
まだ多数設定項目がありますが、とりあえずは赤色の「*」印がついている項目が入力されていれば、問題ないでしょう。入力が終わりましたら「保存」ボタンを押します。

もう1度左メニューの「テンプレート」をクリックしていただくと、今作成したテンプレートがテンプレートリストに追加されていることが確認できます。

図15

ここで、上の画面で赤枠で囲ったロケットアイコンをクリックするとPlaybookが実行されます。

1つのPlaybookを実行するためにずいぶん手間がかかるな、と思われた方もいらっしゃるかと思いますが、作ったインベントリーや認証情報は他のPlaybook(プロジェクト)でも使用できますし、テンプレートを少し変更すれば定期実行もできます。また、あまりLinux環境でYamlファイルを変更したりすることに抵抗感のある方でも、Web UIで操作ができる点は大きなメリットだと思います。Ansibleを導入する際には、ぜひAWXの導入も合わせて検討していただければと思います。

――――――――――――――――――――――――――――――――――

執筆者プロフィール:水谷裕一
大手外資系IT企業で15年間テストエンジニアとして、多数のプロジェクトでテストの自動化作業を経験。その後画像処理系ベンチャーを経てSHIFTに入社。
SHIFTでは、テストの自動化案件を2件こなした後、株式会社リアルグローブ・オートメーティッド(RGA)にPMとして出向中。RGAでは主にAnsibleに関する案件をプレーイングマネジャーとして担当している。

お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!