聡イベントレポートAnsibleで実現する基盤設定の自動化ガイド究極の効率化、コスト削減、ガバナンス強化などが期待されるITの自動化。幅広い領域に対応し自動化そのものを標準化するAnsible。多くの自動化ソリューションがある中、シンプルなエージェントレス方式を採用し、高度なコーディングスキルが不要なツールとして注目されるAnsibleの魅力を、このほど大阪で開催されたセミナーから紹介します。関心が高まっています。運用自動化に取り組んでいるケースでも、システムごとに異なるツールやスクリプトを使うなど、属人・サイロ化された自動化になっている場合が多く、目指すべき究極の効率化は実現できていないのが現状です。サイロ化された自動化の場合、ノウハウが共有できず、それぞれのエンジニアが独自に自動化を学ぶため、学習コストの増加や適用範囲の局所化、ノウハウの属人化を招き、組織間の連携や共有は困難です。した課題に応えるソリューションがAnsibleです。夜間対応や休日対応に費やされる時間や頻度を極限まで減らすとともに、コンテナを活用したAgileなアプリケーション開発・リリースに伴うネットワークやファイアウォールの設定変更などの効率化を実現。人的ミスの低減によるコスト削減、セキュリティガバナンスの強化も可能です。実際、アプリケーションのリリース作業が約10分の1に、仮想マシーンの払い出し作業が従来の12日間から10分へ、データセンターのメンテナンスも60時間から10分への短縮を実現したという事例もあります。近年のAnsibleへの関心の高まりにより、設定ファイル「Playbook」のサンプル集も充実。ゼロからPlaybookを作成することなく、専用サイトで検索したPlaybookをカスタマイズして利用することで効率的な開発が可能です。パブリッククラウドなどを1つのツールで自動化できるパワフルさ、対象とする機器にエージェントのインストールを必要としないエージェントレスが特徴。既存のパラメーターシートや手順書をPlaybookに置き換えることで、サーバーの構築や構成変更の自動化を可能にします。パラメーターを書くように作成することができ、インフラ作業で使用頻度の高い2000弱の操作コマンドがモジュール形式で提供されています。パブリッククラウド、プライベートクラウド、Linux、Windowsなどの端末にくわえ、ネットワーク機器やストレージなどエージェントのインストールが不可能な対象機器まで、一つのツールで管理することが可能です。Towerは、権限管理や認証情報の保管、APIによる外部連携、複数のパーツ化したPlaybookを組み合わせて実行するといった機能を提供。GUIによる自動化の管理、履歴管理、ロールベースの権限管理により、組織で運用するための自動化・集中管理を強力に支援します。Engineを呼び出して操作することで、効率的で安全な自動化環境の実現が可能です。標準化、共通化により組織全体の自動化を実現Ansibleを導入し自動化への取り組みがスタートする当初はPlaybookの開発が必要になりますが、一定の期間を経て標準化されることで、Playbookの新規開発は減少します。Ansibleの有用性が認知・浸透されるに伴って、さらに他の部門への適用も検討され始めた場合、Playbookの開発数も再び増加します。全社的な共有と標準化が最終的に終われば、自動化対象のノード数の増加に比較し開発数は減少、それ以上増えることなく安定化します。自動化されたノード数とPlaybook数のギャップは、自動化の効果が最大に達していることを示します。Ansibleの導入と標準化では、組織内に従来存在した膨大な数の手順書から共通化が可能なパーツを抽出し使い回すため、こうした流れをたどることが多くなります。「プライベートクラウド上にサーバーを構築」→「ソフトウェアをインストール」→「設定する」といった3つのPlaybookがパーツとしてあった場合、同様の作業をパブリッククラウド上で行いたい場合、「サーバーの構築」にあたるPlaybookだけを変更すれば良いので、自動化した手順数に対してPlaybookの数が少なくなります。実際導入企業からは、特定のシステムにしか使えないと思っていた手順書でも、精査するとパーツの共通化が可能な部分が多かったといった声も聞かれました。Ansibleは、基本的に標準化という考え方に基づいています。対象機器によってやり方も、使うスクリプトも異なるといったサイロ化の発生要因を排除し、組織内で共通化・標準化された自動化を実現。作業者と認証情報、作業者と操作ログをそれぞれ切り離して管理することができるので、自動化の作成者が運用担当者に実行権限だけを提供し、編集は行わせないといった権限の付与も可能です。ソースコードマネジメントシステムとの連携も可能で、間違えたPlaybook、バージョンの古いPlaybook、接続先が違うインベントリ情報などを誤って使ってしまうといったトラブルを防ぎ、構成管理データベースを使うことで、対象機器を選別した上で自動化を行うことも可能になります。高い汎用性で、多様な領域の自動化を支援Ansibleを活用することで、例えば仮想マシンの払い出しであれば、アプリ担当者はインフラ担当に依頼することなく自分の欲しいスペックをパラメーターで指示し、ボタンクリックだけですぐにサーバーを手に入れることも出来ます。スイッチングデバイスの設定など反復作業が多いネットワーク管理も、最低限の人数で行うことができ、リリース作業や夜間パッチの適用作業の自動化も可能になります。した機能を最大限に活用することで、ポータル画面からカタログに応じたサーバー環境も構築できます。監視システムと連携してエラー処理を自動化し、電子承認ワークフローと連携させてファイアウォールの一時解放のプロセスもシンプルに自動化することができます。ここで紹介した機能以外にも、Ansibleが適用可能な領域は多岐に渡り、日々の運用の中で、その可能性を広げていただければと思います。注目が集まる構成管理ツールエンドユーザーやアプリケーション担当者からのインフラ部門に対する要求は、障害対応や問い合わせ対応だけでなく、新しいシステムインフラの構築やアプリケーションのリリースへの迅速な対応など多岐に渡ります。「止められないシステム」の増加により運用対象となる機器が増加し、インフラ担当への負担は大きくなっているのが現状です。インフラ構築や運用のスペシャリストであるエンジニアの増員は容易ではなく、結果的に限られたメンバーによる深夜作業や休日出勤が増えることになります。Ansibleをはじめ、ChefやPuppetなど構成管理ツールへの注目が高まっている背景には、こうした状況を改善しようとする「働き方改革」があるのでしょう。Automationに注目するのは、深夜対応や休日出勤、ヒューマンエラーに起因する障害対応などのコストを大きく削減できること、業務部門やエンドユーザーからの要求に対応した運用管理のスピードアップができること、さらにITにおけるガバナンスを支援できることが理由です。Playbookによる自動実行で、夜間や休日対応の負荷は軽減され、エンドユーザーが求める各種の環境をより早く提供できます。誰が、いつ、どこの環境へ、何を実行したのか、その結果が成功(または失敗)したのかといった実行履歴の記録による証跡確認とともに、それぞれの作業の実行権限を明確に設定することが可能なため、権限がない作業が間違って実行されたり、誤った環境に適用されたりといったコンプライアンス違反を回避して運用におけるガバナンスを実現できるのも魅力です。Towerでは、権限を部門ごとに分け、さらに部門内の誰が実行できるのかといった詳細な権限設定が可能です。PCを持ち出すことが多い営業部門であれば、部門の責任者が自身の権限で暗号化を行うといったように、業務上の役割と権限にそって明確に実行権限を設定することができます。TowerのGUI画面をブラウザから使用して、サーバーを構成するといった作業実行はもとより、その実行権限と実行対象となるサーバー・PCも定義可能です。その結果、こうした作業に忙殺されがちなインフラ担当のIT技術者は、日常の運用はAnsibleに任せて、IoT導入などをはじめとする攻めのIT構築に取り組むことができるでしょう。自動化において留意すべきポイント構成管理の自動化を実現する際に留意する点として、自動化する作業そのものを簡潔にする必要があります。サーバー構築の際に、そのサーバーにインストールする必要がある製品全ての作業を一度に実行するPlaybookをつくってしまうと、非常に限定的なサーバー環境を実現する自動化になってしまいます。依存しない作業を洗い出して自動化を行うことが有効です。Playbook作成時に、どう自動化を行えば、部品化や標準化によって他のシステム環境で利用が可能になるのかを考えることも必要でしょう。データベースの設定実行で影響がでないように、部品で定義する設定内容や部品が持つ役割として何を対象範囲にして標準化するのかを考えるとよいでしょう。Playbookの作成にあたっては、サンプルが非常にたくさん公開されているので、これらを活用して作成にかかる時間そのものの圧縮も心がけていただきたいと思います。