クラウドエンジニアブログ

Azure Pipelines で実現する IaC - 第 1 回 Introduction

human02

齋藤 恭平

1. はじめに

こんにちは!ねこ好きの齋藤です。

近年、一日に 10 回以上アプリケーションのデプロイが行われるように、短期間でのシステム リリースが求められています。
それと同時にシステムを支えるインフラの設定も、アプリケーション同様、変化に強く、迅速な変更が求められてきています。
こうした背景に対し、仮想化・クラウドの登場やツールの進歩により、インフラの設定をアプリケーション同様コードで管理する Infrastructure as Code (本シリーズでは「IaC」と記載します。) を導入している企業が増えてきています。

本シリーズでは、Azure の IaaS 環境を対象に、CI/CD ツールである Azure Pipelines を使用した IaC についてご紹介します。


2. 対象読者

本シリーズの対象読者は下記のような方々を想定しています。

  • Azure を利用中で、今後のさらなる活用として自動化を検討している方
  • Azure 領域だけではなく、OS やミドルウェアの設定も自動化を行いたい方


3. IaC とは

3-1. 概要

まず「IaC とは?」という点について簡単に触れておきます。

IaC とは、インフラの構築・設定をコード化することですが、単にコード化すればよいということではありません。
背景である「変化に強く、迅速な変更」を可能にするために、IaC を実現する各ツールは下記のような特性を持ちます。

左右にスクロールしてご覧ください。

No. 特性 説明
1. 再現性 同一の構成を繰り返し構築・設定できること
2. べき等性 同一のリソースに対して何度処理を実行しても同じ構成を担保すること
3. 可搬性 別環境で同様の構成を構築・設定できること
4. 敏捷性 人の手を介さず機械が処理することにより、迅速に構築が可能であること
5. 管理性 アプリケーション コード同様、テキスト ベースの設定ファイルを使用することでバージョン管理システム (Git など) によるコード管理を実現すること

本シリーズでは、上記の 4 にフォーカスを当ててご紹介します。


3-2. IaC の対象

IaC が対象とするレイヤーは下記の通りです。

左右にスクロールしてご覧ください。

No. レイヤー 説明 代表的なツール
1. ブートストラップ サーバー リソースの作成・設定、OS インストールを行う クラウド環境の場合、クラウド提供ベンダーが標準提供することが多い - ARM Template
- Terraform
- Ansible
2. コンフィグレーション OS、ミドルウェアの設定を行う - Ansible
- Chef
- Puppet
- PowerShell DSC
3. インフラ テスト ブートストラップ / コンフィグレーション対象のリソースのテストを行う - Pester (PowerShell のテスト フレームワーク、スクリプトによりブートストラップ領域のテスト)
- Serverspec (コンフィグレーション領域のテスト)
- Testinfra (コンフィグレーション領域のテスト)
- Infrataster (コンフィグレーション領域のテスト)


下図は対象レイヤーを図式化したものです。

3-2. IaC の対象



4. IaC によってどう変わるか

下記の図は IaC によってインフラ構築がどのように変わるかを例示したものです。

4. IaC によってどう変わるか


この図の役割や流れは例のため、実際の現場では異なることもありますが、重要な点はインフラ担当が実施していた手作業の大半がツールにより自動化されている点です。


5. Azure DevOps/Azure Pipelines とは

本シリーズの記事では、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 はビルド・テスト・デプロイ・リリースを自動で処理するための実行基盤および管理機能を提供するツールとなります。


6. 全体の流れ

本シリーズでは、下図の処理フローを想定して説明をします。

6. 全体の流れ



本シリーズは、上記処理フローを下記の 4 回に分けて説明します。

  • 第 1 回:Introduction ← イマココ
  • 第 2 回:Azure リソース プロビジョニング
  • 第 3 回:Azure リソース テスト
  • 第 4 回:OS・MW コンフィグレーション

今回はここまでとなります。
第 2 回をお楽しみに!



関連ページ

Azure Pipelines で実現する IaC - 第 2 回 Azure リソース プロビジョニング
Azure Pipelines で実現する IaC - 第 3 回 Azure リソース テスト
Azure Pipelines で実現する IaC - 第 4 回 OS・MW コンフィグレーション

お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録