IaCコードのCI/CD
[更新:2025年12月11日]
システム構成情報を「Infrastructure as Code」(IaC)のコードとしてリポジトリで一元管理し、CI/CDパイプラインで自動テスト・検証・デプロイを行います。これにより、インフラ構成の変更を安全かつ再現性高く適用でき、設定ミスの防止、レビューと自動化に基づく品質向上を実現し、迅速な環境構築や変更管理の効率化が可能になります。
各機能のサービス対応
機能 |
対応サービス |
|---|---|
コードリポジトリ |
Azure Repos |
CI/CD |
Azure Pipelines |
システム構成要素
さくらのクラウド
エンハンスドロードバランサ
サーバ
Addon
Azure DevOps(Azure Repos、Azure Pipelines)
構築手順
さくらのクラウドの準備
Terraform Backend
tfstateを保存するためのさくらのオブジェクトストレージを作成します。
このサンプルではオブジェクトストレージは以下の設定で作成します。
設定項目 |
値 |
|---|---|
バケット名 |
|
フォルダ名 |
|
パーミッション |
|
パーミッションで発行したアクセスキー情報は、後ほどAzure Pipelinesの環境変数として使用します。
Azure Pipelinesの準備
Azure Pipelinesから、さくらのクラウドリソースを作成・更新するよう設定します。
Gitリポジトリの準備
Gitリポジトリ(
usecase-b3)を作成作成したGitリポジトリ(
usecase-b3)に、以下のファイル群をコミット
2つのブランチを作成
devブランチprodブランチ
Pipelineの作成
Azure Pipelinesを使用して、TerraformによるIaCのCI/CDを行うPipeline(azure-pipeline.yml)を作成します。
Pipelineに移動し、「New pipeline」を選択
「Azure Repos Git (YAML)」を選択
先ほど作成したGitリポジトリ(
usecase-b3)を選択
「Existing Azure Pipelines YAML file」を選択
- 選択したGitリポジトリに作成済みの
azure-pipeline.ymlを指定して「Continue」を選択ブランチはmainを選択する
Pipeline YAML(
azure-pipeline.yml)のプレビューを確認する
Variable設定
続いて以下の変数を設定します。これらの変数は、パイプライン実行時にさくらのクラウドにアクセスするために必要です。
Pipeline YAMLのプレビュー画面で「Variables」を選択
「New Variable」を選択
以下の変数を設定する。機密情報は「Keep this value secret」にチェックする
変数名
説明
機密情報
SERVER_PASSWORDさくらのクラウドのサーバに設定したパスワード
Yes
SSH_KEYさくらのクラウドのサーバに設定した公開鍵
Yes
ACCESS_KEY_IDTerraform Backend用のオブジェクトストレージのパーミッションのアクセスキーID
Yes
SECRET_ACCESS_KEYTerraform Backend用のオブジェクトストレージのパーミッションのシークレットアクセスキー
Yes
SAKURACLOUD_ACCESS_TOKENさくらのクラウドAPIトークン
Yes
SAKURACLOUD_ACCESS_TOKEN_SECRETさくらのクラウドAPIシークレット
Yes
すべての変数を設定したら、「Save」を選択して保存
Pipelineの保存
最後に、Pipeline YAMLのプレビュー画面で「Save」を選択
承認フローの設定
承認者の設定
デプロイ時に承認者を設けるためにAzure DevOpsで設定します。
Azure Pipeline の Environments に移動し、「New environments」から新しいEnvironmentを作成
Environment名を「prod」と入力し、「None」を選択して作成
作成したEnvironment(
prod)に移動し、「Approvals and checks」から「Approvals」を選択して承認者を設定
「Pre-check approvals」を選択し「Next」を選択
承認者を選択して、「Create」を選択
設定した承認者を確認
承認フローの使用権限
続いて、作成した承認フローを利用するPipelineに対して使用権限を付与します。
承認者の確認画面で「Security」を選択
「+」を選択して、作成したPipeline(
usecase-b3)に対する使用権限を付与
設定した使用権限を確認
動作確認
設定が完了したPipelineは手動で実行して動作確認を行います。
Azure DevOpsの「Pipelines」セクションに移動し、作成したPipeline(
usecase-b3)を選択「Run Pipeline」を選択して、gitブランチ(
dev/prod)を選択し手動でPipelineを実行実行が開始されると、各ステージの進行状況が表示される
パイプラインの2つのステージ
このパイプラインは2つのステージで構成されています:
Dev ステージ:devブランチで実行
Terraform validate:設定ファイルの検証
Terraform plan:変更内容の確認
Terraform apply:開発リソースへの適用
Prod ステージ:prodブランチで実行(承認が必要)
Terraform validate:設定ファイルの検証
Terraform plan:変更内容の確認
Terraform apply:本番リソースへの適用
インフラストラクチャとコードの差分の検出
Terraformを使用することで、さくらのクラウド上の実際のインフラストラクチャ状態とコード定義との差分を検出できます。
terraform planコマンド差分確認の例:
$ terraform plan
Terraform will perform the following actions:
# sakuracloud_server.server will be updated in-place
~ resource "sakuracloud_server" "server" {
id = "113702528621"
name = "usecaseb3fb-server-7fbc96b6"
~ tags = [
- "Test",
]
# (19 unchanged attributes hidden)
# (2 unchanged blocks hidden)
}
Plan: 0 to add, 1 to change, 0 to destroy.
この出力では、Terraformでは定義してないtags = ["Test"]が差分として表示されています。