3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

KDDIアジャイル開発センター Engineer & DesignerAdvent Calendar 2022

Day 5

組織用のGCPアカウントを作ってTerraformで管理を始めました

Last updated at Posted at 2022-12-05

はじめに

そろそろ弊社でもしっかりGCPを利用していこうと考え、組織用のGCPアカウントを作成しました。
またガバナンスを効かせるため、組織、フォルダ、プロジェクトの管理をTerraformで一元管理していく方針をたてました。
その際に、どういった点を検討すべきなのか、どう判断したかを書いています。

GCPの組織を何で管理するか?

公式ドキュメントを確認します。ドキュメントが素晴らしい。

Cloud Identity と組織を確認すると、いくつか選択肢が記載されています。
弊社は現時点でGoogle Workspaceを利用していないので、 Google Identity Free Editionを利用します。
すでにGoogleWorkspaceを利用されている方は、Workspace上でGoogle Identityを有効にするようです。
Free Editionではデフォルトで50ユーザーライセンスが提供されています。(2022/12現在)

GCP用の組織をGoogle Identityで作成する

公式チェックリストにある、「最初のCloud Identityアカウントと特権管理者ユーザー名を作成します。」 をクリックして作成に進みます。
GoogleIdentityアカウント作成.png

Cloud Identityの作成

では、実際に作成していきます。

  1. 組織情報を入力して[次へ]をクリックします。
    組織情報.png
  2. 特権管理者ユーザーの情報を入力[次へ]をクリックします。
    管理者情報.png
  3. 組織で利用するドメイン情報を入力して、[次へ]をクリックします。
    ドメイン情報.png
  4. 入力したドメイン情報に誤りがないか確認して、[次へ]をクリックします。
    ドメイン確認.png
  5. お知らせを受け取るか選択して、[次へ]をクリックします。
    お知らせ.png
  6. 特権管理者ユーザーのアカウント情報を入力して、[同意して続行]をクリックします。
    ログイン情報入力.png
  7. 組織が作成されました。
    作成完了.png

組織ドメインの保護

指定のTXTレコード、もしくはCNAMEを登録することで、ドメインの所有権を確認し、他のユーザーに不正に利用されないようにします。(ドメインを保護しないと組織は利用できません)
弊社の場合、ドメインは親会社で管理しているため、設定までリードタイムが必要でした。

注意 ドメイン保護については設定から14日以内での設定が必要です。最悪の場合アカウントが削除される可能性があるとのことなので、早めに対応しましょう。

TXTドメインの設定が反映されると、ドメイン保護が完了し、利用可能になりました。
これで作成した組織でGCPが利用可能になります。
ドメイン保護完了.png

GCP上の組織とフォルダについて

弊社では今後サービス提供、社内利用それぞれが干渉しないようにする必要があるため、Googleの公式ページを参考にフォルダ構成、プロジェクト構成で設計をしました。
これをもとに、Terraformでフォルダを作成していきます。
設計.png

Terraformでフォルダを管理する

今後、AWS、Azure、など他のクラウドも同様のレベルで管理をしていきたいという方針を持っているため、Terraformでの管理を進めていこうと考えています。

事前設定

  1. Terraform State管理用のフォルダとプロジェクトの作成
    • GCS(Google Cloud Storage)でTerraformのstateを管理するため、まず手動でstate管理用のフォルダ、プロジェクトを作成します
    • GCSのメニューからバケットを作成します
  2. サービスアカウントの設定
    • GCSへの操作権限を付与する
    • フォルダ、プロジェクトの作成権限を付与する

ローカル環境設定

CI/CD環境は今後整備をすすめるため、まずはローカルからデプロイできる状況を作ります。
設定手順は公式の手順を参考に進めています。(MacOSを前提としています。)

  1. gcloud CLIのインストール

    cd /usr/local/bin
    curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-410.0.0-darwin-arm.tar.gz
    tar xvzf google-cloud-cli-410.0.0-darwin-arm.tar.gz
    ./google-cloud-sdk/install.sh
    

    ※対話モードでの設定は、全てデフォルトにしています。
    ※バージョンは公式手順から最新のパッケージのURLを確認してください。

  2. gcloudの初期設定

    ./google-cloud-sdk/bin/gcloud init
    
    • ここでgoogle chromeが立ち上がり、該当のgoogleアカウントでログインを行い、アクセス許可を行う
    • Pick cloud project to use: と表示されるので、デフォルトのプロジェクトIDを選択して終了する。
  3. gcpへのログイン

    gcloud auth application-default login
    

Terraformコード作成

  1. TerraformのStandard Module Structureを参考に簡単なモジュールを作成していきます。

    フォルダ構成
        .
        ├── envs
        │   ├── backend.tf
        │   ├── main.tf
        │   ├── outputs.tf
        │   ├── providers.tf
        │   └── variables.tf
        └── modules
            └── folders
                ├── README.md
                ├── main.tf
                ├── outputs.tf
                └── variables.tf
    
    modules/folders/main.tf
    resource "google_folder" "folders" {
      count        = length(var.names)
      display_name = var.names[count.index]
      parent       = var.org_name
    }
    
    envs/providers.tf
    provider "google" {
      project = "project_id"
      region  = "asia-northeast1"
    }
    
    envs/backend.tf
    terraform {
      backend "gcs" {
        bucket = "bucket_name"
      }
    }
    
    envs/main.tf
    data "google_organization" "org" {
      domain = "domain.com"
    }
    
    locals {
      names = [
        "Corporation", //会社内利用
        "Services"     //サービス提供用
      ]
    }
    
    module "folders" {
      source   = "../../modules/folders"
      names    = local.names
      org_name = data.google_organization.org.name
    }
    
    
  2. Terraformコマンドを実行してデプロイ

    cd envs
    terraform init  // 初期化
    terraform plan  // plan
    terraform apply // デプロイ
    
  3. GCPのコンソールを確認すると、無事作成されました!
    フォルダ.png

まとめ

  • CloudIdentityを利用する場合には、ドメインへのTXTレコード反映のリードタイムを事前に確認しておくと安心です。
  • 環境が整いつつあるので、今後弊社において、GCPの利用実績がどんどん増えていくと思います。
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?