不使用服务帐号密钥执行Terraform的方法是什么?

概述

由于通常在Terraform的执行过程中需要下载服务帐号密钥,为了在GCP上创建资源而无需生成服务帐号密钥并使用Terraform进行操作,下面将提供具体步骤:

操作步骤

创建用于Terraform的服务账号

gcloud iam service-accounts create terraform --display-name "Account for Terraform"
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member serviceAccount:terraform@${PROJECT_ID}.iam.gserviceaccount.com \
  --role roles/editor

给操作用户提供服务帐户令牌创建者(roles/iam.serviceAccountTokenCreator)权限。

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member user:${USER_EMAIL} \
  --role roles/iam.serviceAccountTokenCreator

创建一个执行MakeFile的文件。

将”sa”更改为用”1.”创建的服务账号名称。

SERVICE_ACCOUNT = "sa"

SHELL := /usr/bin/env zsh

init:
    @GOOGLE_OAUTH_ACCESS_TOKEN="$(shell gcloud --impersonate-service-account=${SERVICE_ACCOUNT} auth print-access-token)" terraform init

plan:
    @GOOGLE_OAUTH_ACCESS_TOKEN="$(shell gcloud --impersonate-service-account=${SERVICE_ACCOUNT} auth print-access-token)" terraform plan

apply:
    @GOOGLE_OAUTH_ACCESS_TOKEN="$(shell gcloud --impersonate-service-account=${SERVICE_ACCOUNT} auth print-access-token)" terraform apply

destroy:
    @GOOGLE_OAUTH_ACCESS_TOKEN="$(shell gcloud --impersonate-service-account=${SERVICE_ACCOUNT} auth print-access-token)" terraform destroy

.PHONY: init plan apply destroy

通过MakeFile执行Terraform。

make plan

「make: 对于 `plan’ 没有需要做的事情。」发生了。

如果命令行不是以TAB开头,则会发生。

参考网站 (原始来源)

不要下载谷歌云服务帐号密钥!| 作者:Ryan Canty | Medium

广告
将在 10 秒后关闭
bannerAds