自動化プラットフォーム Ansible Tower 3.4.0 の注目機能

ソリューションアーキテクトとしてAutomation&Managementを担当している中島です。

本記事では、先日リリースされた Ansible Tower 3.4.0 の新機能をみていきます。リリースノートの全体はこちらから確認できます。 https://docs.ansible.com/ansible-tower/latest/html/release-notes/relnotes.html#ansible-tower-version-3-4-0

3.4ではさまざまな拡張や安定性の向上が図られていますが、この中でも特に使い勝手に影響を与えそうな部分に注目していきたいと思います。

f:id:irixjp:20190122125749p:plain
top

Nested workflow への対応

Ansible Tower では「ジョブテンプレート」と呼ばれる「押せば誰も自動化を実行できるボタン(のようなもの)」を作成し、セルフサービス化した自動を組織内で展開して効率化を実現します。ジョブテンプレートは以下の3つを主要な要素として構成されます。

  • 自分のやりたいことを記述したPlaybook
  • 自動化の対象ノードを設定するインベントリー
  • 対象への認証情報

ボタン化された自動化をどんどん作成して「自分がその作業をやらなくても良くする」ことで効率化を進行させていきます。単純に10個あったステップを自動化で1個にするだけでなく、ボタン化して権限委譲することて作業のセルフサービス化を進めていくことが自動化で効果を出すためのポイントになります。

さて、この方法で自動化を進めていくとたくさんのボタンができることになりますが、そうなるとこのボタンを押すことも自動化したくなります。そのときに活躍するのが Ansible Tower の「ワークフロー」機能です。ワークフローでは、定義されたジョブテンプレートをどのような順番で実行していくのかを定義します。

この画像では1つ1つのボックスがジョブテンプレートです。Ansible Tower 上では準備されたジョブテンプレートをブラウザからGUIのエディタを使って順に並べていくことでワークフローを構成できます。ワークフローでは複数の経路の並行実行や、前のジョブの成功失敗による分岐をサポートしています。

f:id:irixjp:20190122124125p:plain
workflow

従来まではワークフローの中ではジョブテンプレートの順序制御しかできなかったのですが、3.4からはワークフローの要素として別のワークフローが定義できるようになりました。入れ子(Nested)なワークフローとも呼べます。

f:id:irixjp:20190122124153p:plain
nested-workflow

このおかげて更に自動化の再利用性が高まり、ますます自動化の効率を上げることが可能になります。

ジョブの分割実行への対応

Ansible Tower はクラスター構成を組むことができ、可用性だけでなく全体のジョブ実行のスループットを上げることが可能でした。しかし、これは複数のジョブテンプレートが実行されたときのスループットであり、単一ジョブテンプレート(ansible-playbook コマンドの実行とも言いかえられます)がクラスタ内で並列実行されるわけではありませんでした。

しかし、Ansible Tower 3.4 から単一ジョブテンプレートをクラスタ内で分割して実行することがサポートされました。これにより大量のノードに対してのジョブテンプレート実行の性能が向上します。

3.4の画面ではジョブテンプレートの画面に「Job slicing」という項目が追加されておりデフォルトは1(分散しない)になっています。

f:id:irixjp:20190122124300p:plain
sliceing

この値を2以上にすることで、クラスタ内の複数台のTowerインスタンスを使ってジョブが実行されるようになります。 次の画像では、3台のインスタンスを持つTowerクラスタ上で、Job sliceing を「3」にして実行した際の結果です。ジョブの実行結果にどのように分散されたかが表示されます。

f:id:irixjp:20190122124434p:plain
slicing-job

このJob slicingでは設定した数でインベントリーのノードを複数ジョブに分割して実行します。あまり意味はありませんが、クラスタが保持するインスタンス数以上のSlicing数を設定することも可能です。以下は3インスタンスで6 Slicing した際の結果です。

f:id:irixjp:20190122124530p:plain
over-slicing

ジョブの分割はインベントリーを元に行われます。 分割無しのジョブ結果と、分割した際の1つのジョブの結果を見比べると対象となったインベントリーの数に違いがあることが確認できます。

f:id:irixjp:20190122124741p:plain
no-slicing
f:id:irixjp:20190122124803p:plain
slicing-3

自動化をセルフサービス化する

Ansible Tower を使うことで「単純に10個のコマンドが1個になるだけでなく」、

  • セルフサービス化することで作業のたびに発生する調整事項をなくし
  • ワークフローで一度作った自動化の再利用性を高めていく

これらによって、自動化の効果を最大化して全体として大きな効率化を実現することが可能となります。

さいごに

ちなみに、Ansible Towerの評価をされたい方は、以下のサイトの「FREE ANSIBLE TOWER TRIAL - ENTERPRISE FEATURES」からライセンスの依頼が可能です。ですが、対応が遅かったりするケースもありますので、その際には、ansible-jp@redhat.com までご連絡いただければ、2-3営業日で対応させていただきますので、お気軽にご連絡ください。

Ansible Tower License

Ansible Towerのダウンロードは以下です。

Ansible Tower Trial | Ansible.com

参考価格など日本向けの情報サイトもありますので、是非ご参照ください。

www.redhat.com

ハッピー・オートメーション!

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません