こんにちは!ねこ好きの齋藤です。
近年、一日に 10 回以上アプリケーションのデプロイが行われるように、短期間でのシステム リリースが求められています。
それと同時にシステムを支えるインフラの設定も、アプリケーション同様、変化に強く、迅速な変更が求められてきています。
こうした背景に対し、仮想化・クラウドの登場やツールの進歩により、インフラの設定をアプリケーション同様コードで管理する Infrastructure as Code (本シリーズでは「IaC」と記載します。) を導入している企業が増えてきています。
本シリーズでは、Azure の IaaS 環境を対象に、CI/CD ツールである Azure Pipelines を使用した IaC についてご紹介します。
本シリーズの対象読者は下記のような方々を想定しています。
まず「IaC とは?」という点について簡単に触れておきます。
IaC とは、インフラの構築・設定をコード化することですが、単にコード化すればよいということではありません。
背景である「変化に強く、迅速な変更」を可能にするために、IaC を実現する各ツールは下記のような特性を持ちます。
左右にスクロールしてご覧ください。
No. | 特性 | 説明 |
---|---|---|
1. | 再現性 | 同一の構成を繰り返し構築・設定できること |
2. | べき等性 | 同一のリソースに対して何度処理を実行しても同じ構成を担保すること |
3. | 可搬性 | 別環境で同様の構成を構築・設定できること |
4. | 敏捷性 | 人の手を介さず機械が処理することにより、迅速に構築が可能であること |
5. | 管理性 | アプリケーション コード同様、テキスト ベースの設定ファイルを使用することでバージョン管理システム (Git など) によるコード管理を実現すること |
本シリーズでは、上記の 4 にフォーカスを当ててご紹介します。
IaC が対象とするレイヤーは下記の通りです。
左右にスクロールしてご覧ください。
No. | レイヤー | 説明 | 代表的なツール |
---|---|---|---|
1. | ブートストラップ | サーバー リソースの作成・設定、OS インストールを行う クラウド環境の場合、クラウド提供ベンダーが標準提供することが多い | - ARM Template - Terraform - Ansible |
2. | コンフィグレーション | OS、ミドルウェアの設定を行う | - Ansible - Chef - Puppet - PowerShell DSC |
3. | インフラ テスト | ブートストラップ / コンフィグレーション対象のリソースのテストを行う | - Pester (PowerShell のテスト フレームワーク、スクリプトによりブートストラップ領域のテスト) - Serverspec (コンフィグレーション領域のテスト) - Testinfra (コンフィグレーション領域のテスト) - Infrataster (コンフィグレーション領域のテスト) |
下図は対象レイヤーを図式化したものです。
下記の図は IaC によってインフラ構築がどのように変わるかを例示したものです。
この図の役割や流れは例のため、実際の現場では異なることもありますが、重要な点はインフラ担当が実施していた手作業の大半がツールにより自動化されている点です。
本シリーズの記事では、Azure DevOps というツール群の中の、Azure Pipelines を使用します。
Azure DevOps とは、DevOps を実現するために Azure のサービスとして提供されるツール群です。
"ツール群" と記載したのは、Azure DevOps は複数のツールから構成されるためです。
Azure DevOps を構成するツールは下記の通りです。
※代表的な他社製品はイメージしやすくするために記載しています。あくまで参考のため、Azure DevOps の各ツールと機能が一致しないケースがあります。
左右にスクロールしてご覧ください。
No. | ツール | 説明 | 代表的な他社製品 |
---|---|---|---|
1. | Azure Boards | タスクやバグをカンバン形式で管理するツール | Backlog, Trello, Jira |
2. | Azure Repos | ソース コードを管理するツール | GitHub, GitLab |
3. | Azure Pipelines | ビルドやテスト、デプロイ、リリースを自動化する CI/CD パイプライン ツール | Jenkins, Circle CI, GitHub Actions |
4. | Azure Test Plans | 自動化できないテストを管理するツール (テスト手順書の作成・共有) | QASymphony, TestRail |
5. | Azure Artifacts | 開発したライブラリを NuGet や npm などのパッケージとして公開する機能 | GitHub Package Registry, GitLab Package Registry |
Azure Pipelines はビルド・テスト・デプロイ・リリースを自動で処理するための実行基盤および管理機能を提供するツールとなります。
本シリーズでは、下図の処理フローを想定して説明をします。
本シリーズは、上記処理フローを下記の 4 回に分けて説明します。
今回はここまでとなります。
第 2 回をお楽しみに!
関連ページ
Azure Pipelines で実現する IaC - 第 2 回 Azure リソース プロビジョニング |