Ansibleのプレイブックやコマンドを毎回手動で実行するのにうんざりしていますか?なぜAnsible AWXを使用して、ウェブインターフェイスを利用して生活をより簡単にしませんか?AWXは、すべてのAnsibleタスクを実行するためのユーザーインターフェースとAPIを提供するRed HatがスポンサーになっているオープンソースのWebアプリケーションです。そして、このチュートリアルでは、UbuntuボックスにAnsible AWXをインストールし、Ansible AWXを使用してインベントリを管理する方法を学びます。今日から、Ansible AWXを使用して非常に効果的な自動化を活用しましょう!
プレイブック:
このチュートリアルは、ステップバイステップの手順に基づいています。一緒に進める場合は、次のものを用意してください:
Ansibleコントローラーホスト-このチュートリアルでは、Ubuntu 20.04.4 LTSバージョンマシンでAnsible v2.11.7を使用しています。
- Docker-Docker v19.03.11をUbuntu 20.04.4 LTSバージョンマシンで使用しています。
- AnsibleコントローラーホストマシンにはPython v3.6以降がインストールされている必要があります。このチュートリアルではPython v3.8.10を使用しています。
- A GitHub account with one private and one public repository created in GitHub that you will use to store Ansible Playbook.
Ansible AWXの依存関係のインストールと設定
Ansible AWSは、Ansible Towerの基盤となりました。Ansible AWXを使用すると、ITチームがテスト、ラボ、開発、およびその他のPOC環境で快適に使用できるようになります。
LinuxシステムにはデフォルトでAnsible AWSがインストールされていないため、まずAnsible AWSをインストールしてAnsible Playbookを使用してマルチコンテナとして実行する必要があります。
1. 以下の各コマンドを実行してシステムパッケージを更新し、docker-compose-pluginをインストールします。

2. 次に、以下のコマンドを実行してマシンにインストールされているdocker composeのバージョンを確認します。
以下の出力は、最新のDocker Composeバージョンv2.5.0がインストールされていることを示し、Docker Composeが正しくインストールされていることを確認します。

3. 以下の各コマンドを実行して、Ansible AWXの作業に必要なパッケージをインストールします。



4. 今、以下のコマンドを実行して、公開GitリポジトリからAWXパッケージアーカイブをダウンロードし、その後パッケージを解凍します。

5. 以下のコマンドを実行して、AWXインストールディレクトリ(awx-17.1.0/installer/)に移動し、ランダムなパスワード(pwgen)を生成します。
お使いのマシンにインストールされているAnsible AWXのバージョンによっては、AWXインストールディレクトリ(awx-17.1.0/installer/)が異なる場合があります。
生成されたパスワードをメモしてください。AWXコンソールでシークレットキーとして使用します。

6. 最後に、テキストエディターでAWXインストーラディレクトリ(awx-17.1.0/installer/)内のinventoryファイルを開きます。 inventoryファイルには、AWXの設定が含まれており、AWX UIにログインする際に使用されます。
インベントリファイルで、admin_passwordの値をpasswordに、secret_keyの値をステップ5で生成したランダムなパスワードに変更します。

Ansible AWXのインストールと起動
Ansible AWXを適切に構成したら、Ansible playbook (install.yml) を使用してインストールする準備ができました。 install.yml Ansible playbook は、抽出したAnsible AWXパッケージに含まれています。このplaybookには、Dockerイメージを構築し、複数のコンテナを実行するためのコマンドを実行するタスクが含まれています。
1. 下記のansible-playbook コマンドを呼び出して、install.yml Ansible Playbook を実行します。
以下のように、いくつかのタスクの状態が変更されていることがわかります。これは、AWXホストが適切な状態ではなく、コマンドを実行するために変更されたことを示しています。
それに対して、他のタスクはokの状態を示しており、これは変更が必要ないことを示しています。

2. 次に、以下のdockerコマンドを実行して、利用可能なすべてのDockerコンテナをリストします。
以下の出力には、実行中のコンテナ(awx_tasks、awx_redis、awx_web、およびawx_postgres)が表示され、AWXが正しくインストールされていることが確認されます。

3. 最後に、お気に入りのブラウザを開いて、Ansible AWX (https://AWX-HOST-IP:80) に移動します。 AWX-HOST-IP をAnsibleホストのIPアドレスに置き換えてください。すべてがうまくいけば、ブラウザーでAnsible AWXログインページが表示されます。これは以下のように示されます。
お使いのユーザー名(admin)とパスワード(password)を入力し、ログインをクリックしてAnsible AWXダッシュボードにアクセスします。これらの資格情報は、「依存関係のインストールとAnsible AWXの構成」セクションの最後のステップで構成したものです。
AWX はHTTPS通信のために自己署名証明書を自動的にインストールします。ブラウザで受け入れが必要な場合があります。

ログイン後、ブラウザは以下のようにAWXダッシュボードにリダイレクトされます。

インベントリの作成と管理
Ansible AWXダッシュボードにアクセスできるようになったら、タスクの自動化に取り組むことができます。このチュートリアルでは、Ansible AWXダッシュボード内で複数のAnsibleコンポーネントを管理します。ただし、最初にインベントリを作成して管理する必要があります。
1. AWXダッシュボードでInventoriesをクリックして、Ansible AWXに保存されているインベントリリストを開きます。デフォルトではデモインベントリが表示されます。
デモインベントリを無視して、新しいインベントリを作成するためにAddドロップダウンボタンをクリックします。

2. 次に、Ansible AWXダッシュボードで最初のインベントリを構成するために、以下のパラメータをCreate new inventoryページに指定します:
- 名前 – ATA Learning(お好みで名前を指定できます)。
- 説明 – インベントリの説明(オプションですが、他と区別するのに役立ちます)。
- 組織 – Defaultオプションを選択します。AWXはデフォルトの組織を作成しますが、独自の組織も作成できます。
上記の詳細をすべて指定したら、以下のように保存ボタンをクリックします。

最後に、以下に示すように、インベントリタブ(左パネル)をクリックして、新しく作成したインベントリ(ATA Learning)が存在するかを確認します。

Ansibleジョブの作成と実行
インベントリを正常に設定しましたが、今のところそれは役に立ちません。ジョブを呼び出さない限り、ジョブはAWXがホストのインベントリに対してAnsibleプレイブックを起動するインスタンスです。そしてもちろん、ジョブを呼び出す前に、まずジョブを作成する必要があります。
Ansibleを作成して実行するには:
1. GitHubリポジトリ内にYMLファイルを作成し、以下のプレイブックをコピー/貼り付けます。YMLファイルの名前は任意ですが、このチュートリアルではata.ymlという名前のプレイブックを使用しています。

2. Ansible AWXダッシュボードに移動し、左パネルのProjectsをクリックして利用可能なプロジェクトのリストにアクセスします。ジョブを作成する前に、プロジェクトが必要です。
デモプロジェクトを無視し、新しいプロジェクトを作成するには、[追加]ボタンをクリックします。

3. 新しいプロジェクトの詳細を提供し、[保存]をクリックして新しいプロジェクトを保存します:
- 名前 – プロジェクト名はお好きなものにできますが、このチュートリアルではプロジェクトの名前をmyprojectに設定します。
- 説明 – インベントリと同様に、説明を追加することは任意ですが、プロジェクトを識別するのに役立ちます。
- 組織 – インベントリと同様に、組織はデフォルトを選択してください。
- ソース制御資格情報タイプ – SCMとしてGitを選択します。
- ソース制御URL – GitHubのソースコードのURLを指定します。

4. プロジェクトを作成した後、左側のサイドバーで「テンプレート」をクリックして、利用可能なすべてのテンプレートにアクセスします。
テンプレートページで、追加ドロップダウンボタンをクリックし、「ジョブテンプレートの追加」オプションを選択してテンプレートを作成します。

5. 以下の詳細を指定し、下部の保存をクリックして新しいジョブテンプレートを保存します:
- 名前 – ジョブテンプレートの名前をお好みで設定しますが、このチュートリアルではジョブテンプレートの名前をmyjobに設定します。
- ジョブタイプ – ジョブが実行するアクションを設定します(実行)。
- プロジェクト – ステップ3で作成したプロジェクトを選択します(myproject)。
- インベントリ – 「インベントリの作成と管理」セクションのステップ2で作成したインベントリを選択します(ATA Learning)。
- 手順1で作成したプレイブックを選択します(ata.yml)。

6. 最後に、テンプレートページで以下を使用して新しく作成したジョブを起動します:
- ジョブ(myjob)をクリックしてジョブの情報ページにアクセスします。
- ジョブの詳細を表示する詳細タブに移動します。
- ページの一番下にある起動をクリックしてジョブを起動します。

以下のように、ジョブはlocalhostで正常に実行され、プレイブック(ata.yml)で指定されたディレクトリ内のすべてのファイルがリストされました。

結論
このチュートリアルでは、Ansible AWXオープンソースツールを利用して、Ansibleプレイブック、インベントリ、およびプレイブックを単一のUIダッシュボードで管理しました。特定のディレクトリのファイルをリストするなどのAnsibleジョブを実行しました。
今やAnsible AWXソフトウェアの知識がしっかりと身についたので、将来のAnsibleプレイブックをすべてAnsible AWXを使用して実行する準備ができていますか?クーロンジョブを追加してタスクを自動化することはありますか?