Ansible AWXの構築方法

こんにちは。自動化エンジニアの水谷です。
先日Ansibleの導入方法について書かせていただきましたが、今回はAnsible AWXについて少し書いてみたいと思います。

Ansible AWXとは

Ansible AWX(以下AWX)は、AnsibleをWeb UIあるいはREST APIで使用するためのOSSツールです。ブラウザ上でAnsibleのPlaybookやInventoryが管理できるのみならず、Playbookのスケジュール実行や、実行したPlaybookの履歴管理、またAnsible単体では難しかったセキュリティ管理なども行えます。
位置付け的には、Red Hat社が有償で提供する「Ansible Tower」のコミュニティ版、あるいは開発版にあたり、無償で使用できます。
ここでは、AWXのUbuntu環境へのインストール方法を説明します。現時点ではWindows 10のWSL(WSL1)にはインストールできませんので、AWXを試してみたい方は、Ubuntu等のLinuxがインストールされたマシンを用意するか、VirtualBox等のVMでLinux環境を用意する、あるいはAWSのEC2(t3.large以上)のLinuxインスタンスを立ち上げるなどしてください。なお、2020年6月頃リリースされるとされているWindows 10のアップデート(バージョン2004)に搭載される新しいWSL(WSL2)にはAWXのインストールができるという噂がありますので、リリースされたら試してみたいと思います。

図1

インストールの手順

AWXをインストールする方法はいくつかあるようですが、DockerベースのAWXを公式Githubサイトからクローンして、そこにあるPlaybookを実行する方法が簡単だと思います。ここでは、フレッシュなUbuntu 18.04LTSにこの方法を使ってインストールする方法を書きたいと思います。

Ansibleのインストール

まずはAnsibleのインストールから始めます。Ansibleのリポジトリを登録すれば、apt-getでインストールできるので簡単です。

sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible
インストールが終わった後、以下のコマンドでバージョン情報が表示されればOKです。
ansible --version

DockerおよびDocker-composeのインストール

続いてDockerのインストールもインストールします。インストール方法はネットで検索するとたくさん見つかりますが、基本的に以下でよいかと思います。
まずは前準備として、必要なツール類をインストールします。
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
次にDocker公式のGPG公開鍵をインストールします。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
続いてリポジトリを追加します。
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
そして、インストールです。
sudo apt-get update
sudo apt-get install -y docker-ce
次のコマンドでバージョン情報が表示されることを確認します。
docker version
また、以下のコマンドでDockerサービスが起動していることも合わせて確認しましょう。
sudo systemctl status docker

続いてDocker-composeもインストールします。Docker-composeは、複数のコンテナを使うDockerアプリケーションを、定義・実行するツールです。

こちらは基本的にダウンロードして実行権限を付ければOKです(ここではバージョン1.25.5をダウンロード)。
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod 0755 /usr/local/bin/docker-compose
以下のコマンドでバージョン情報が表示されることを確認してください。
docker-compose -v

DockerのPythonモジュールをインストール

AWXのインストールはAnsibleのDockerモジュールを使って行いますので、これを動作させるためにDockerのPythonモジュールをpip(pip3)を使ってインストールします。
まずはpip3のインストールから。
sudo apt install python3-pip
DockerのPythonモジュールをインストールします。
sudo pip3 install docker
Docker-composeのPythonモジュールをインストールします。
sudo pip3 install docker-compose

AWXをClone

さて、ここからが本番。AWXのインストールはGithubにあるPlaybookをAnsibleで実行することで行います。
まずはGithubからAWXをクローン。
git clone https://github.com/ansible/awx
特定のバージョンのAWXをインストールしたい場合は、https://github.com/ansible/awx/releases を見てタグを指定してクローンしてください(下はバージョン11.2.0の場合の例)。
git clone https://github.com/ansible/awx -b 11.2.0

Inventoryファイルの変更

この状態で、~/awx/installer/にあるPlaybook "install.yml"を実行すればAWXがインストールできるのですが、その前にInventoryファイルを変更します。
必ず変更していただきたいのが、下の行です。
#project_data_dir =/var/lib/awx/projects
この行の先頭の"#"(コメント記号)を消します。これをしておかないと、Playbookを(SVCに置かずに)ローカルに置いてテストする時に問題となります。
Linuxに不慣れな方は、"nano awx/installer/inventory"でInventoryファイルを開いて、「↓」キーで該当する行まで移動し、"#"を消してから、CTRL+O、Enter、CTRL+Xで保存/終了してください。
また、下の行あたりは必要であれば変更しておいてください。
host_port=80
admin_user=admin
admin_password=password

Playbookの実行

さて、あとはPlaybookを実行するだけです。
cd awx/installer
ansible-playbook -i inventory install.yml

AWXの動作確認

Playbookの実行がエラーで止まらず最後まで実行できれば、基本的にインストールは成功と考えてよいと思います。ブラウザを起動し、アドレスバーに「localhost」とタイプしてEnterを押せば、AWXのログイン画面が表示されるはずです。ユーザー名「admin」、パソワード「password」でログインできるはずですのでお試しください。AWXの使い方については、また次の機会に書きたいと思います。

図2

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

執筆者プロフィール:水谷裕一
大手外資系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/

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

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