EVENT REPORT

CI/CD実現に必須なDevOpsの取り組み

 2018年1月、レッドハット株式会社主催によるセミナー「Ansible による IT Automation 速習ワークショップ」が開催された。IT Automation ツールであるAnsibleを使うことで、ITの自動化がどのように可能になるのかを紹介。Ansibleを利用したIT Automation の概要と、インストールの方法から、実際の使い方まで、ハンズオンでの演習を通して学習した。今回は、このワークショップの概要を紹介する。

運用自動化を強力に推進するAnsible

 Ansibleは、「ITオートメーション」を実現するためのツールであり、IT部門が使うことを想定している。いわば、IT部門そのものの業務を効率化するためのツールと考えていい。

 今回のワークショップでインストラクターを務めたレッドハット株式会社テクニカルセールス本部中島氏によると、Ansibleは数ある自動化ツールのなかでも、デファクトに近いものといえる存在になりつつあるという。その理由として中島氏は、3つの特徴をあげた。シンプル、パワフル、エージェントレスだ。

 「“シンプル”であるというのは最も重要で、何を自動化するかの定義が容易です。そしてシンプルであれば共有もしやすい。インフラ、アプリケーション、品質管理など、それぞれの領域に携わる技術者が自分たちの業務を共通の方法で効率化できます。そしてAnsibleはサーバーやOS、ネットワーク機器、クラウド環境といった多様な環境をダイナミックに自動操作できる“パワフル”なツールです。そして“エージェントレス”で動くため新規の案件だけでなく、既存環境の効率化へも取り組みやすい」とのこと。

シンプル、パワフル、エージェントレス

オープンソースの開発成果が集約され、簡単で効率的な自動化を実現

 では、Ansibleはどのように動作するのだろう。「Ansibleでは何を自動化するのかをYAMLという形式で記述し、これをPlaybookと呼びます。つまりAnsibleで自動するとはこのPlaybookを作成する事になります。」と、中島氏は、ワークショップで演習を開始する前に、Ansibleの概要について紹介した。Playbookには、予め準備されているモジュールと呼ばれる小さな単位を順番に配置していく。このモジュールは運用で頻出する作業をまとめたプログラムの関数のようなものである。Ansibleには標準で1000以上のモジュールが準備されており多くの作業がこのモジュールを呼び出すだけで実施可能となっている。更にAnsibleでは新しいモジュールが日々開発されており、それに伴いAnsibleの利便性も向上しているとの事。オープンソースの多様性と上手くマッチしていると感じられた。

 その他、自動化の実行対象を決めるインベントリファイルと、何を実行するかを決めるPlaybookが切り離されて管理されており、組み合わせを変えることで容易に様々な環境に対して一度作ったPlaybookを再利用していくことが可能だと解説された。

 「シェルスクリプトとの違いがわかりにくいという方もいらっしゃいますが、大きな違いは冪等性にあります」と、中島氏。「自動化したプロセスが途中で失敗したときなど、もう一度スクリプトを実行してよいかどうか判断が難しい場合がありますが、Paybookは、最終的になってほしい状態を記述するため、何度実行しても結果として状態は変わりません。この冪等性がAnsibleの特徴になります」。例えば、サーバーの定義を記述したPlaybookを実行すると、定義に合わせたミドルウェアなどがサーバーにインストールされ、サーバーの状態が変更される。その後、同じPlaybookを再度実行したとしても、「既に望んだ状態」になっているためサーバーへの変更はされないことになる。

Ansible's Automation Engine

Playbookの作成を通じてAnsible Engineを知る

 本ワークショップでは、手始めにAnsible Engineのインベントリファイルやモジュールの概念を理解するために、アドホック・コマンドという手法を利用して簡単な一操作を対象に行うところから始まった。そして次には、パッケージのインストールやサービスの有効化・無効化を行うシンプルなPlaybookを作成し、そこへ変数やループといった要素を追加することで徐々に多機能なPlaybookへと一歩一歩進んでいく。そして最後には、作成したPlaybookをパーツとして分解して構造化されたディレクトリに納めることで容易に再利用可能なroleを作成することが前半のゴールとなった。

中島氏

 このようにPlaybookを再利用可能なRole形式とすることで、組織内での車輪の再開発を防止し自動化推進の効率を上げると共に、コピーして一部だけが変更された亜種のようなPlaybookの拡散を防止することが可能だと言う。

 また、このRole化されたPlaybookはインターネット上に膨大なサンプルが存在しており、Ansible Galaxy というサイトで検索しダウンロードして利用することが可能だと言う。

apache_basic playbook

Ansible Tower の利用方法を理解

 Ansible Engine がコマンドラインのツールであるのに対して、 Ansible Towerは、ウェブアプリケーションとして動作する「自動化プラットフォーム」だという。コマンドを直接実行するAnsible Engine では徹底することが難しい、アクセス権や実行証跡の管理を担ってくれる。

 中島氏は、「Ansible Towerを導入することで、どのPlaybookが、どの対象に実行され、どんな結果になったかを追跡可能になります」とその機能を紹介した。また、特定のオペレーターはPlaybookの変更はできずジョブの実行のみを可能にする、特定のユーザーは検証サーバーのインベントリにしかアクセスできない、といったロールベースのアクセス権限の設定ができるため、より安全にPlaybookの実行が可能になる。

 「Ansible Engineでコマンドを実行する際に必要となる、Playbook、インベントリー、認証情報を組み合わせてつくったジョブをAnsible Towerで権限や変数を管理するといった考え方をすると理解しやすいかもしれません」と中島氏。

 Ansible Tower には、他にもマルチテナント、通知、スケジューリング等をUIとして提供する。またGitのようなソースコード管理システムにPlaybookを置く事で、Playbookに厳密なバージョン管理を行うことが可能だ。また、インベントリーをインポートすることや簡易的な入力フォームを作成してPlaybookの実行時に変数の値を利用者に入力・選択させることもできる。ワークショップでは、Ansible Towerの基本的な構成を終えた後でジョブテンプレートを作成して実行。Ansible Towerの基本的な機能を体験した。

ROLES

さらなる知識共有へ、レッドハットは取り組みを続ける

 「今回の演習では触れませんでしたが、Ansible Towerは、ワークフローエディターという機能も持っています」と中島氏。ワークフローエディターを利用することで、複数のジョブを連続して実行することもできるし、分岐を作成するなど、「自動化のフロー」をつくることもできる。この機能を使うと、小さく作った作業の単位を連結して大きな作業を作ることで個々の再利用性を更に高めたり、インベントリーの対象が移り変わっていく場合などのAnsible Engineだけでは対応しにくいケースでも、連結して一つの作業とすることも可能だという。「今回のワークショップで紹介したのは、Ansible EngineとTowerが備えた数多くの機能の入り口だけですが、これだけでも多くの効率化が可能です」と中島氏は言う。「今回のセミナーをきっかけに、様々な機能を学び、試していただく事で更に自動化の適用範囲が広がるので、ぜひチャレンジしてほしいと」とセミナーを締めくくった。

 Ansible はサーバーやOS、ネットワーク機器、クラウド環境といった多岐に渡る環境をシンプルに自動操作可能な、世界で最も人気のあるIT Automation ツールの1つだ。構築作業を自動化してスピードUPと品質の向上を行いたい現場のエンジニアや、手動業務を自動化してコスト削減と共に品質を上げたい現場の運用エンジニア、システムに自動化を組み込みんで自律的なシステムをデザインしたいアーキテクトといった様々な立場、状況での活用が期待できる。最新の自動化技術を理解して、今後の人材育成に活かしたいマネージャーにとっても、導入を検討すべきツールではないだろうか。

 セミナー参加者からも、「計画しているインフラの開発に利用したい」「OS再起動のようなものにはどう対応するのか」「最新の自動化が有益であることがよくわかった」「Ansible Towerの機能をもっと深くしりたい 」といった具体的な活用をイメージした質問や前向きな活用の声が聞こえた。Ansibleのさらなる理解をサポートする、情報、知識、事例を共有するセミナーなど今後もレッドハットは取り組みを続けてゆく。

中島氏

Red Hat Ansible Automation

お問い合わせ