不使用服务帐号密钥执行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