ようへいの日々精進XP

よかろうもん

Ansible AWX を使ってみる(1)

概要

  • Ansible が Web ユーザーインターフェースで利用出来る Ansible AWX を使ってみる
  • Chef Server や Hosted Chef 等に似ている気がするなー
  • Ansible AWX って車の名前みたいでカッコイイ
  • 解りやすいドキュメントでとっても簡単
  • ただし無償版は 10 ホストまでしか登録出来ず、それ以上のホストを取り扱う場合には有償ライセンスを購入しなければいかんぜよ

インストール

インストールした環境

古いバージョンの ansible ではダメ

ドキュメントを斜め読みした後、何も考えずに

yum install ansible

を行った後で

wget http://ansibleworks.com/releases/awx/setup/awx-setup-1.2.2.tar.gz
tar zxvf awx-setup-1.2.2.tar.gz
cd /awx-setup-1.2.2

group_vars/all 内の pg_password: の値を修正する。その後、

./setup.sh

を行ったところ...

ERROR: roles is not a legal parameter in an Ansible Playbook

悩んだ末に改めて eple リポジトリをセットアップした上で最新版の ansible をインストールしてみた。

wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

epel リポジトリに上がっている ansible のバージョンはこちら。インストール後、改めて setup.sh を実行する。

cd /awx-setup-1.2.2
./setup.sh

セットアップ自体ももちろん ansible でインストールが実行され、ずらずらとメッセージが表示された後に正常にインストールが行われる。インストール完了後、ブラウザでアクセスすると以下のようなログイン画面が表示される。

f:id:inokara:20130813163851p:plain

ユーザー名は admin パスワードは group_vars/all 内の admin_password: に指定されたパスワードを利用する。


AWX の組織構造

Ansible の組織構造は以下のようになっている。

f:id:inokara:20130813164424p:plain

対象となる HostOrganizations 以下の Inventories に紐付く。また UserCredentials が関連付けられる。キモは Job TemplatesHostCredentials を関連付け、最後に Project で定義した Playbook を関連付ける感じ...うだうだ書いていてもよくわからんので、ま、やってみましょか。


クイックスタート

と、言う事で試してみましょか。

Organizations を作る

f:id:inokara:20130813170703p:plain

何はともあれ Organizations を作るところから Ansible AWX は始まる。設定項目は非常にシンプルで Name のみで問題ない。

Organizations に紐付く User を作る

f:id:inokara:20130813170710p:plain

Organizations に所属する User を作成する。

Inventories と Group と Host を作る

f:id:inokara:20130813171225p:plain

まずは Inventories を作成。

f:id:inokara:20130813171239p:plain

次に Inventories にグループを追加する。

f:id:inokara:20130813171250p:plain

そして、グループにホストを追加する。ホストにはホスト名または IP アドレスで指定することが出来る。

User に関連する credentials を設定する

f:id:inokara:20130813172254p:plain

Organizations に所属する Usercredentials を設定する。

f:id:inokara:20130813172311p:plain

実際に設定対象ホストにログインするユーザーとパスワードを設定する。今回はテストなので root ユーザーを設定してみる。

Project を設定する

これまでは Web ベースで操作を行なってきたが、一変、Ansible AWX サーバーにログインして作業を行う。

f:id:inokara:20130813172332p:plain

Create New をクリックして新しい Project を作成する。

f:id:inokara:20130813172342p:plain

Ansible AWX サーバーにログインして Playbook を設置する。

/var/lib/awx/projects に Web ベースで作成した Project 名のディレクトリを作成し、上記の yaml ファイルを設置する。

f:id:inokara:20130813172353p:plain

Project Base PathPlaybook Directory を確認、選択する。

Job Template を設定する

いよいよ本題。これまでに設定してきた InventoryProjectCredential をまとめて設定することになる。

f:id:inokara:20130813174144p:plain

Job Template から Create New をクリックして新しい Job Template を作成する。

f:id:inokara:20130813174151p:plain

上記の通り、これまでに設定した内容を設定して保存する。

レッツ実行

やっとここまでやってまいりました。

f:id:inokara:20130813174202p:plain

Launch をクリックしてジョブを実行してみる。

結果

しばらくするとジョブが実行される。

f:id:inokara:20130813174211p:plain

正常にジョブが実行されると上記のように successful が表示される。

f:id:inokara:20130813174218p:plain

ジョブのリンクをクリックすると、上記のようにジョブの結果も表示される。


ということで

Chef Server とかと比較して...

Chef Server 歴、Hosted Chef 歴共に 1 ヶ月の私感。

  • セットアップはどちらとも楽ちん
  • Client と User で混乱が無い(未だに Chef Server の Client と User の違いが理解出来ていない...)
  • 動作が軽い気がする
  • 一旦、サーバーにログインして Playbook を設置しなきゃいかんのは面倒かも
  • 無償版は 10 ホストまでなので業務での運用はコストを考慮する必要がある

あれ...

数時間使ってみてChef ServerHosted Chef よりも Jenkins に近い感じがしてきましたとさ。