💡

【備忘】Circle CI Server + terraform Orb + Google Cloud(GCP) ※OIDC無し

2025/01/22に公開

というかterraformのOrbでシェルを実行する方法

GOOGLE_APPLICATION_CREDENTIALSを使ってサービスアカウントとしての認証を行う
entrypointを上書きしてみたけど、いいのかこれは...

設定

.circleci/config.yml

version: 2.1

orbs:
  terraform: circleci/terraform@3.5.0

executors:
  default:
    docker:
      - image: hashicorp/terraform:1.10.4
        entrypoint: /bin/sh

jobs:
  plan:
    parameters:
      env:
        type: string
        default: stg
    executor: default
    environment:
      GOOGLE_APPLICATION_CREDENTIALS: "/root/project/.credentials.json"
    steps:
      - checkout
      - terraform/fmt:
          path: terraform
          recursive: true
      - run:
          name: "set credential"
          command: |
            echo ${CONTEXT_CREDENTIAL_JSON} > ${GOOGLE_APPLICATION_CREDENTIALS}
      - terraform/plan:
          path: terraform/google/envs/<< parameters.env >>

workflows:
  version: 2
  plan-stg:
    jobs:
      - plan:
          env: dev
          context: context-name

executor

terraformをインストールするのは嫌だったのでterraformの公式イメージを使用した上で、
ファイル書き込みのためにentrypointを /bin/sh で上書き

executors:
  default:
    docker:
      - image: hashicorp/terraform:1.10.4
        entrypoint: /bin/sh

environment

GOOGLE_APPLICATION_CREDENTIALS に JSONキーのファイルパス
CONTEXT_CREDENTIAL_JSON にJSONキー(contextまたはプロジェクトの環境変数に設定しておく)

メモ

Circle CI ServerでのOIDCの使い方が分からなかったので(使えるんだろうか)
なかなかナレッジ見つけられなかったので備忘(もっと良い方法ありそう)

Discussion