はじめに
モダンなIT環境では、AWSやAzureなどのクラウドサービスと、Slack・GitHub・OktaなどのSaaSが混在する構成が一般的です。これらをバラバラに管理していると、設定ミスやスケールの限界が生じやすくなります。
そこで有効なのが、Terraformによる「マルチクラウド+SaaS統合のコード化」です。本記事では、以下のポイントに沿って、実用的なコード設計例を紹介します。
- AWSとAzureの同時管理(Provider分離)
- Slack / GitHub / OktaなどのSaaS連携モジュール
- Terraform Cloud / Workspaceでのガバナンス統合
1. マルチクラウド対応:AWS × AzureをTerraformで管理
Providerの定義
# providers.tf provider "aws" { region = "ap-northeast-1" alias = "aws_tokyo" } provider "azurerm" { features {} alias = "azure_main" }
このように alias を付けることで、複数クラウドを同一プロジェクト内で切り分けて操作できます。
リソースの記述例
# AWS S3バケット resource "aws_s3_bucket" "shared_logs" { provider = aws.aws_tokyo bucket = "multi-cloud-shared-logs" } # Azure Storageアカウント resource "azurerm_storage_account" "logs" { provider = azurerm.azure_main name = "tfmultilogstore" resource_group_name = "shared-resources" location = "japaneast" account_tier = "Standard" account_replication_type = "LRS" }
Terraformを使うことで、異なるクラウドにまたがる構成をコードで統一管理できるため、監査性と再現性が大幅に向上します。
2. SaaS連携:Slack / GitHub / Okta をコードで管理
Terraformはクラウドだけでなく、SaaS管理にも強力なProviderが豊富に用意されています。ここでは、代表的な3つの例を紹介します。
Slack通知チャネルの構成
# provider provider "slack" { token = var.slack_token } # Slackチャンネル通知設定 resource "slack_conversation" "alerts" { name = "aws-alerts" is_private = false }
GitHubのリポジトリ作成
provider "github" { token = var.github_token owner = "my-org" } resource "github_repository" "infra_code" { name = "multi-cloud-infra" visibility = "private" description = "Terraformによるマルチクラウド統合コード" }
Oktaユーザー/グループ管理
provider "okta" { org_name = "mycompany" base_url = "okta.com" api_token = var.okta_token } resource "okta_group" "dev_team" { name = "DevOps_Team" } resource "okta_user" "john" { first_name = "John" last_name = "Doe" email = "john.doe@example.com" login = "john.doe@example.com" group_ids = [okta_group.dev_team.id] }
これにより、インフラだけでなく、開発・セキュリティツールの設定までもコードで管理でき、チーム全体のITガバナンスが強化されます。
3. Terraform Cloud / Workspaceでの統合運用
Workspaceによる環境分離
Terraform CloudのWorkspace機能を使えば、以下のように環境別管理が可能です:
- dev / staging / prod 環境ごとにworkspaceを作成
- 各環境の変数や機密情報(APIトークンなど)も管理可能
- 実行計画の差分確認と承認(manual apply)にも対応
ガバナンス機能
Terraform Cloudでは、以下のようなセキュアでチーム向けの運用機能が提供されます:
- Policy as Code(Sentinel)による変更制御
- Git連携によるCI/CD型Infrastructure管理
- 変更履歴と監査ログの記録
TerraformをTerraform Cloudと組み合わせることで、マルチクラウドとSaaSの構成管理を統一基盤で実現できます。
まとめ
マルチクラウドとSaaSが共存する現代のインフラにおいて、Terraformによるコード化は不可欠です。
- AWS × Azureを同一コードベースで管理
- Slack / GitHub / OktaなどのSaaS連携もProviderで統一管理
- Terraform Cloudによる環境分離・監査・ポリシー適用
本記事の内容を応用すれば、クラウド×SaaS×ID管理を統合した「運用の自動化・透明化」が現実のものになります。