Ansible Tower(AWX) 触ってみた
はじめに
この記事は Ansible Advent Calender 2017 20 日目、12/20(水)の記事です。
Red Hat の Ansible ノベルティ欲しさに書くことを決めた不純な動機で登録しましたが、いざ12月に入って投稿が始まるとコアな話からネタな話までそうそうたる面々・・・
登録したのを後悔しつつ、せっかくなのでちゃんと記事にして投稿することにしました。 コアでもネタでもないですがお付き合いくださいませ。
まずは建てる
Ansible Tower を建てるには 3 つの方法が用意されています。
3 WAYS TO TRY ANSIBLE TOWER FREE
今回は Vagrant でのデプロイを選択しました。
起動するとまずはライセンスファイルが必要になります。
ライセンスは ここ から取得できます。
Enterprise Features を利用したかったのですが、ライセンスが届かなかったので Limited Features を利用しました。
Limited Features だけでは Tower を堪能できませんので AWX もデプロイします。
Installing AWX
@tsukaman さんの 2 日目の記事も参考に。 tsukaman.hateblo.jp
Ansible Tower の概要
さて、おっ建ててログインしたのはいいものの、Core しか使っていない身としてはさっぱり Tower の使い方がわかりません。
Core ? Engine ? Project ? わかりやすいのは Core か Engine かな・・・
調べてみたら素晴らしいスライドがありました。
Tower を触りたければ一読するとすんなり触れるようになります。
Tower のイイトコロ
ここからが本題です。
触ってみて、イイ!と思ったところを列挙してみました。
※画像は基本的に AWX のものを利用します。
プロジェクト
Playbook をどこから持ってくるか、を定義します。
手動を選択した場合、Tower ホストの /var/lib/awx/projects 配下に
プロジェクト用のディレクトリを作成し、その中に Playbook を配置します。
Tower のユーザーは Playbook を見ることも編集もできません。
SCM において権限を持っているか、手動であれば Tower ホストにおける管理者権限が必要となります。
ジョブテンプレート
主に以下の要素を用いてジョブを作ることができます。
GUI で簡単に組み合わせを変更でき、柔軟に作成することができます。
- Playbook の集まりであるプロジェクト
- インベントリー
- 認証情報
このジョブテンプレートをスケジュールに組み込み定期実行することができます。
チェックモードで動かすことも可能です。
Core の場合 ansible-playbook コマンドへ渡すインベントリー、Playbook 毎に alias 等を利用してジョブテンプレートとしてのコマンドを作る必要があります。 スケジュール化したい場合はさらに cron へ突っ込んだりとなかなか面倒です。
実行時の画面です。
ansible の出力を確認することができます。
また、各タスクをクリックすることで返り値を確認することができます。
ワークフローテンプレート
作成したジョブテンプレートを基にワークフローを作ることができます。
例えばチェック用のジョブテンプレートを用意しておき、成功 / 失敗に応じて実行するジョブを変更するなど直感的に作成できます。
ジョブテンプレートの組み合わせのため、Playbook / インベントリー / 認証がバラバラであろうとも 一つのワークフローに組み込むことができます。
複数のシステムが連携して実行する必要がある場合、高い効果を発揮すると思われます。
Core の場合 include に when を組み合わせて実現できるかと思います。
ただし、チェックタスクの結果を取得しなければいけなかったりとやはり面倒です。
実行時の画面です。
各ジョブの DETAIL をクリックすることで ansible の出力を確認することができます。
おわりに
今回はあまり組織における利用へ言及できませんでした。
私がそもそもあまり組織での利用をできていないというのもありますが・・・。
触ってみた感想としては簡単に建てれる上に GUI の恩恵が大きく、Playbookを作ることに集中できる、ということでした。
Ansible Core でガリガリ Playbook を書かれている方、ぜひとも触ってみては如何でしょうか。
明日は @yunano さんです。
いつも yunano さんの記事にお世話になっております。
楽しみですね。