速習ワークショップ」が開催された。ツールであるAnsibleを使うことで、ITの自動化がどのように可能になるのかを紹介。概要と、インストールの方法から、実際の使い方まで、ハンズオンでの演習を通して学習した。今回は、このワークショップの概要を紹介する。運用自動化を強力に推進するAnsibleAnsibleは、「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を再度実行したとしても、「既に望んだ状態」になっているためサーバーへの変更はされないことになる。Engineのインベントリファイルやモジュールの概念を理解するために、アドホック・コマンドという手法を利用して簡単な一操作を対象に行うところから始まった。次には、パッケージのインストールやサービスの有効化・無効化を行うシンプルなPlaybookを作成し、そこへ変数やループといった要素を追加することで徐々に多機能なPlaybookへと一歩一歩進んでいく。最後には、作成したPlaybookをパーツとして分解して構造化されたディレクトリに納めることで容易に再利用可能なroleを作成することが前半のゴールとなった。このようにPlaybookを再利用可能なRole形式とすることで、組織内での車輪の再開発を防止し自動化推進の効率を上げると共に、コピーして一部だけが変更された亜種のようなPlaybookの拡散を防止することが可能だと言う。いうサイトで検索しダウンロードして利用することが可能だと言う。Towerは、ウェブアプリケーションとして動作する「自動化プラットフォーム」だという。徹底することが難しい、アクセス権や実行証跡の管理を担ってくれる。Towerを導入することで、どのPlaybookが、どの対象に実行され、どんな結果になったかを追跡可能になります」とその機能を紹介した。特定のオペレーターはPlaybookの変更はできずジョブの実行のみを可能にする、特定のユーザーは検証サーバーのインベントリにしかアクセスできない、といったロールベースのアクセス権限の設定ができるため、より安全にPlaybookの実行が可能になる。Towerで権限や変数を管理するといった考え方をすると理解しやすいかもしれません」と中島氏。他にもマルチテナント、通知、スケジューリング等をUIとして提供する。Gitのようなソースコード管理システムにPlaybookを置く事で、Playbookに厳密なバージョン管理を行うことが可能だ。インベントリーをインポートすることや簡易的な入力フォームを作成してPlaybookの実行時に変数の値を利用者に入力・選択させることもできる。Towerの基本的な構成を終えた後でジョブテンプレートを作成して実行。Towerの基本的な機能を体験した。Towerは、ワークフローエディターという機能も持っています」と中島氏。ワークフローエディターを利用することで、複数のジョブを連続して実行することもできるし、分岐を作成するなど、「自動化のフロー」をつくることもできる。Engineだけでは対応しにくいケースでも、連結して一つの作業とすることも可能だという。EngineとTowerが備えた数多くの機能の入り口だけですが、これだけでも多くの効率化が可能です」と中島氏は言う。「今回のセミナーをきっかけに、様々な機能を学び、試していただく事で更に自動化の適用範囲が広がるので、ぜひチャレンジしてほしいと」とセミナーを締めくくった。構築作業を自動化してスピードUPと品質の向上を行いたい現場のエンジニアや、手動業務を自動化してコスト削減と共に品質を上げたい現場の運用エンジニア、システムに自動化を組み込みんで自律的なシステムをデザインしたいアーキテクトといった様々な立場、状況での活用が期待できる。最新の自動化技術を理解して、今後の人材育成に活かしたいマネージャーにとっても、導入を検討すべきツールではないだろうか。」といった具体的な活用をイメージした質問や前向きな活用の声が聞こえた。共有するセミナーなど今後もレッドハットは取り組みを続けてゆく。