Ansible自動化活用セミナー Session 3

Ansible Towerを用いた
自動化のヒントを探る

惣道 哲也 氏

日本ヒューレット・パッカード株式会社
テクノロジーコンサルティング事業統括
クロス・インダストリ・ソリューション統括本部
テクノロジーアーキテクト部
惣道 哲也

Infrastructure as Codeの価値

 Infrastructure as Codeという言葉を聞く機会が増えました。これは、簡単にいうと、手作業で行っていた作業をコード化することで、インフラの自動化を実現しようという試みです。アプリケーションをコードで記述してJenkinsで動かす、ビルドからテスト、デプロイの流れを自動化するなど、アプリケーション開発の現場では、こうした自動化の流れはすでに確立されていましたが、インフラ構築においても、ツールが充実してきたことで同様の開発が可能になったということでしょう。では、そうした取り組みに、Ansibleは、どのように関わるのでしょうか。

Infrastructure as Codeとは

 上図の構成管理ツールの部分を、Ansibleが担います。プレイブックに記述することで、デプロイの自動化が実現できるということですが、Ansibleは、プレイブックをコードで記述できることからバージョン管理システムを使って管理することができます。バージョン管理システムと合わせてAnsibleを活用していただくと、コードで記述したインフラが履歴管理でき、再現性も備えることができるので、ぜひバージョン管理システムを合わせて活用してほしいと思います。

 アプリ開発では、バージョンを管理しない開発はありえません。インフラ構築の場合でも、バージョン管理を行い、ロールバック可能な環境を構築することは重要です。Ansibleをバージョン管理システムやCIServerと組み合わせることで、アプリケーション開発で使われるプラクティスを同様にインフラ構築環境の構築でも適用できるはずです。

 コードで記述するといっても、Ansibleのプレイブックは、シェルスクリプトとは異なります。最終的になってほしい状態を記述するため、コード自体がインフラの構成を表すことになりますから、コードそのものを品質管理し、バージョン管理し、テストすることができるということになります。これが、Ansibleの本質といえるかもしれません。

Infrastructure as Codeのメリット

AnsibleによるInfrastructure as Code

 2010年ごろに発表されたプロビジョニングツールチェーンという考え方では、インフラを、Bootstrapping、Configuration Management、Orchestrationの3つのレイヤーで考えます。ベースとなるのは、VMなど、OSをプロビジョニングするBootstrappingレイヤー、その上がOS単位での設定や管理を行うConfiguration Managementレイヤー、一番上は、アプリケーションをデプロイしたり、複数のノードを連携してクラスタリングするOrchestrationレイヤーになります。この考え方が登場した頃は、それぞれのレイヤーで異なるツールを使うことが想定されていましたが、Ansibleが登場したことで、すべてのレイヤーを一つのツールでカバーできるようになりました。これは、非常に大きな出来事でしょう。

AnsibleによるInfrastructure as Codeの実現

Ansibleが支援する、ハードウェア管理の自動化

 HPEでは、ハードウェアの統合管理の自動化に注力しています。そうした取り組みの中で開発したHPE OneViewは、REST APIによって物理的なハードウェアリソースを統合管理することができるソフトウェアです。ハードウェアを抽象化し、リソースを組み合わせたプロビジョニングや管理を実現します。

ハードウェアの抽象化とオーケストレーションを実現する

 この、ハードウェア統合管理の自動化をさらに追求したのが、コンピュート、ストレージ、ネットワークリソースをIntelligentに管理統合するHPE Synergyです。

 HPE Synergy では、HPEが公開しているAnsibleモジュールを使うことで、ハードウェアリソースをREST APIだけでなくAnsibleプレイブックから操作することも可能です。例えば、AnsibleプレイブックからOneView APIをアクセスして、物理サーバーを起動する。その際に、サーバーやOSの設定をパラメーターで記述すれば、Ansibleプレイブックだけで物理的なサーバーの立ち上げが可能になり、その上のConfigurationやOrchestrationレイヤとあわせてすべてのサービスを、Ansibleで管理することができるようになります。

HPE OneViewのAPIによりHW・OS層まですべてコントロール可能に

Ansible活用事例① Ansible Towerによる権限管理、履歴管理

 Ansible Towerを使うことで、特定のユーザーや特定のグループが、特定のプレイブックだけを操作できるように制御することができます。Active Directoryとの間でユーザー・グループの管理情報を同期することも可能なため、Active Directoryで管理されるユーザーやグループの単位でそれぞれに権限を設定することも可能です。

別途稼働しているActive Directoryにユーザーを新規作成し、テンプレートの実行権限をAD連携により管理する

Ansible活用事例② ネットワーク、ストレージ機器の連携

 HPE 5940 との連携では、専用のGUI管理画面を使って手作業で行うことも可能ですが、Ansibleで設定することで効率化が図れます。HPE 3PAR StorServなどのストレージ製品、VMWare NSXも、同様にAnsibleで、プレイブックをいくつか実行するだけで、ネットワーク機器から仮想化プラットフォームまで、迅速に連携させることが可能になります。

ネットワーク、ストレージ機器との連携

Ansible活用事例③ HPE SimpliVity 380 を使ったVDIユースケース

 擬似的なVDI(仮想デスクトップ)をつくる場合、ベースとなる仮想マシンから、数十台のクローンを一度に作成することが可能です。例えば、新入社員用にWindowsの仮想マシンをクローニングし、Active Directoryへの参加設定から、OSへのアプリケーションの自動インストール、廃棄(VMの削除)まで、すべてAnsibleから実行することができます。

HPE SimpliVity 380 を使ったVDIユースケース

Ansible活用事例④ 設定ファイルの自動収集

 いろいろなシステムの設定ファイルを収集したい、複数のシステムで確認用のコマンドを実行し、その結果を収集したいといった場合に、管理対象の情報をExcelファイルに記述してそれを読み込んでプレイブックで実行させることができます。Excelファイルにグループを記載し、別のファイルにそれぞれのグループでどのコマンドを実行してほしいか、どんなファイルを収集してほしいかを記載しておくことで、Ansibleから一括して実行することができます。

設定ファイルの自動収集

Ansible活用事例⑤ LB/Zabbixと連携させたVMオートスケール

 2台運用しているWebサーバーの状況を、例えば、Zabbixで監視し、レスポンスタイムがあらかじめ設定した閾値を超えると、それを検知してAnsibleを自動で実行。3台目のVMを自動で立ち上げるといったことが可能です。

LB/Zabbixと連携させたVMオートスケール

Red Hat Ansible Automation

お問い合わせ