Infrastructure as Code(IaC)は、反復利用可能な構成ファイルを使用して、CI/CD開発向けに一貫したデプロイ環境を構築するITシステムインフラストラクチャの管理手法です。

Infrastructure as Codeとは

Infrastructure as Codeとは、手動での構成や従来の構成管理ツールではなく、宣言型またはスクリプト形式の定義、すなわちコードを使用して、ハードウェア、仮想リソース、プラットフォーム、コンテナシステム、サービス、トポロジーなどのインフラストラクチャをプロビジョニングし、管理する手法です。IaCでは、構成、ポリシー、プロファイル、スクリプト、テンプレートを、それらのデプロイ先となるハードウェアやソフトウェアから分離することで、コードと同様に保存、共有、変更、適用できるようにします。

クラウドインフラストラクチャの普及とともに発展してきたこのアプローチは、DevOpsの考え方に基づいており、開発者がアプリケーションのソースコードに用いるものと同様のバージョン管理と再現性を、インフラストラクチャのオーケストレーションにも適用します。IaCアプローチでは、適用するたびに同一のインフラストラクチャ環境を構築することで、継続的インテグレーション、デリバリー、デプロイを支援します。

図

図1:IaCは構成リソースをハードウェアやソフトウェアから分離し、コードと同様に保存、共有、管理できるようにします

Infrastructure as Codeが重要な理由

インフラストラクチャをコードとして扱うことで、自動化、可視性、効率性、拡張性というメリットをインフラストラクチャ管理にもたらします。これにより、手作業を減らし、人的ミスやセキュリティ脆弱性のリスクを抑えながら、アプリケーションをより迅速かつ確実にデプロイできます。構成がシステムから分離されているため、別の場所にある同様のシステムにも容易にデプロイできます。その結果、データセンターからクラウドへ、またはあるクラウドから別のクラウドへ移行する際の課題を軽減できます。

IaCは、サンドボックス環境、テスト環境、本番環境のすべてを同じ宣言型コードまたはスクリプトで構成することで、各環境を同一に保ち、長期にわたって一貫性を維持できるようにし、アジャイル開発とCI/CD戦略も支援します。

Infrastructure as Codeの仕組み

サーバー、ロードバランサー、仮想マシンなどのデータセンターまたはクラウドリソースをIaCで構成する方法には、結果の詳細には触れずに手順を指定する命令型アプローチと、実現方法の詳細には触れずに望ましい構成結果を指定する宣言型アプローチがあります。宣言型アプローチでは、既存のワークフローやテンプレートを利用して構成を実現できます。この違いは、サンドイッチを注文し、作り手が必要な手順とその順序を理解していると信頼して任せる方法(宣言型)と、最終的にサンドイッチができるとは明示せず、作るために必要な手順をすべて指定する方法(命令型)に例えられます。

宣言型と命令型のどちらのアプローチを使用する場合でも、IaCによってプロビジョニングとインフラストラクチャ管理が自動化されます。

F5はInfrastructure as Codeにどのように対応しているか

F5 BIG-IPプラットフォームは、プラグインまたはF5 Application Services 3(AS3)拡張機能を使用することで、次のようなIaC構成・バージョン管理ツールにより「コードとして」扱うことができます。TerraformおよびAnsible。

The F5 Automation Toolchainには、AS3拡張機能とF5 Declarative Onboarding(DO)拡張機能が組み込まれています。AS3はJSON宣言に基づく柔軟でオーバーヘッドの少ないメカニズムで、BIG-IPシステム上のL4~L7アプリケーションサービスを構成できます。DO拡張機能により、BIG-IP製品のL~L3オンボーディングを宣言的に実行できます。