マルチクラウド環境のインフラ構築における問題点
マルチクラウド環境でのインフラ構築
クラウドでは通常、クラウドサービスプロバイダーが用意したGUI画面から各サーバのインフラ設定を行います。このGUI画面での設定は直観的に操作することができ、システムに詳しくない人でも作業が可能になる一方で以下のような問題点があります。
- サーバの数が多くなると設定が大変。作業の手数が多くなり、間違いが発生しやすい
- クラウドサービスプロバイダーごとにGUI画面仕様が異なり、同じ手順で作業できない
- 各サーバの設定内容の管理が大変
知らぬ間に設定を変えられていて、何かあっても設定が戻せないこともある。
マルチクラウド等の構築に適する「Infrastructure as Code」とは
この問題を解決するためにインフラの構築・運用に関わる作業をコード化、自動化するアプローチとしてInfrastructure as Code(IaC)が普及してきました。設定をコードで管理することで、手作業による間違いを防ぎ、設定変更を履歴として管理することができます。そして設定変更作業を自動化することで、大量のサーバに迅速に設定変更を反映させることができます。
クラウドサービスプロバイダーであるAmazon Web ServiceやMicrosoft Azureは、独自にCloudFormation、Resource ManagerといったIaC機能を提供しています。
ところが、企業では異なるサービスベンダー間で複数のクラウドサービスを組み合わせたマルチクラウドや、クラウドとオンプレミス環境を組み合わせたハイブリッドクラウドが普及しています。異なるインフラの構築・運用を効率化し自動化するためのIaCが必要です。
そのためには特定のクラウドサービスに限定せず、マルチクラウド環境で利用可能なIaCソリューションを採用する必要があります。
IaCソリューション「HashiCorp Terraform」
HashiCorp Terraformは、ハイブリッドやマルチクラウド環境に向けて提供されるIaCソリューションです。ユーザはテキスト形式のファイル上に「どのクラウドサービスで」「どのようなスペックを持つ仮想マシンやリソースを使うのか」といったインフラの状態を、コードとして記述し各クラウドへ反映します。
HashiCorp Terraformではクラウドごとの構成機能の違いや記述形式の違いをプラグインで吸収し、どのクラウドに対しても共通のコンフィグレーション(構成)ファイルで記述することが可能です。
コードでインフラの状態を記述することにより、GitHubなどのソースコード管理ツールを用いて作成・変更したコードのレビュー、バージョン管理などが可能となり、再現や複製も容易になります。また対象となるクラウドが数百台、数千台に及ぶような場合、GUIを通して1件1件手作業することなくインフラ環境の構築、変更を自動で行うことができ、人為的なミスを引き起こすことなく正確かつスピーディな対応が可能となります。
※ Terraformが対応しているクラウド、ソフトウェア:
AWS、Microsoft Azure、Google Cloud Platform、Heroku、Oracle Public Cloud、IBM Cloudなどの主要なクラウド、VMware vSphere、OpenStack、Kubernetesなどのソフトウェア
HashiCorp Terraformの優れたガバナンス機能
IaCを使用するグループでは、メンバーが誤った設定やルールに基づかないプロビジョニングを行ってないか監視する必要があります。
- 間違ったリージョンにプロビジョニングを行っていないか
- 禁止されている時間帯に作業を行っていないか
- 10インスタンス立ち上げのつもりが、誤って1000インスタンスを立ち上げてしまわないか
- 多額の利用料がかかるインスタンスを勝手に立ち上げていないか
- 国をまたいだ制約(GDPRなど)を意識しないでプロビジョニングを行っていないか
Terraform Enterpriseでは以下の機能により、メンバーの作成したコードへのマニュアル検証が不要となります。プロビジョニング実行前にこれらのポリシーチェックを行い、誤った設定が行われることを防ぎます。
(1)ポリシー管理機能「Sentinel(センチネル)」と「Open Policy Agent(OPA)」
HashiCorp Terraform全体にまたがるポリシーを設定することが可能です。例えば、アクセス権のないユーザが重要な構成変更をできなくしたり、決められた時間外の構成変更を保留したり、特定のクラウドリソースのプロビジョニングを不可能にするなど、操作ミス、作業ミスなどからインフラを破壊してしまう事故を防ぎます。さらにOPAを利用することで、すでに利用しているポリシーをTerraformに適用することができます。
(2)インフラ定義から自動的にクラウドの費用を見積もる「Cost Estimation(コスト エスティメーション)」
Terraform Enterpriseの「Cost Estimation」機能により、コンフィグレーションファイルの内容からプロビジョニング後にかかるクラウドの月額費用の見積もりを自動的に表示します。利用者がクラウドインフラの状態を変更した場合の費用を事前に試算することができ、適切なクラウドの利用を支援します。
また、あらかじめポリシーとしてコストの上限などを決めておき、ポリシーに違反する場合には自動的に承認プロセスへとエスカレーションすることも可能。これによりインフラに対するガバナンスの確立が可能となります。
(3)開発スピードの向上と品質の標準化「Private Module Registry」
利用頻度の高いサーバーやネットワーク構成をモジュール化し、Private Module Registryに登録することで「社内標準」として社内に限定して公開できます。
利用者は事前にレビューされたモジュールを選ぶだけで構成を作成でき、設計のばらつきやセキュリティリスクを抑えられます。
HCP Terraform
HCP Terraformは、Terraform Enterpriseと同等の機能をHashiCorp社がクラウドサービスとして提供します。
Terraform Enterpriseでは、自社のサーバにTerraform Enterpriseを構築し運用する必要がありましたが、HCP Terraformを利用することで、それらのリソースやコストを割く必要がなくなり、小規模からTerraformを活用することが可能となります。
HCP Terraformを選択するメリット
- サーバやネットワークを用意する必要がない
- 小規模から利用することが可能
しかし、HCP TerraformがTerraform Enterpriseに取って代わることはありません。Terraform Enterpriseでは以下のメリットがあります。
- クローズドな環境でTerraformをホストしたい
- プロビジョニング時のパフォーマンスを最適化したい
- 日本以外のデータセンターのクラウドサービスを利用できない
Terraform Enterprise、HCP Terraform、それぞれのメリットを比較し最適なソリューションを選択することができます。
価格
お客様の環境によって異なりますので、個別にお見積りいたします。お気軽にお問い合わせください。
