22
33set -e
44
5+ source bosh-cpi-src/ci/tasks/utils.sh
6+
57: ${access_key:? }
68: ${secret_key:? }
79: ${region:? }
@@ -10,11 +12,12 @@ set -e
1012: ${delete_on_failure:= true}
1113: ${generate_random_name:= false}
1214: ${action:= " " }
15+ : ${terraform_role_arn:? }
1316: ${terraform_source:? }
1417: ${output_module:= " metadata" }
1518# Remote state parameters
16- : ${remote_state_access_key:= ${access_key} }
17- : ${remote_state_secret_key:= ${secret_key} }
19+ # : ${remote_state_access_key:=${access_key}}
20+ # : ${remote_state_secret_key:=${secret_key}}
1821: ${remote_state_region:= ${region} }
1922: ${remote_state_bucket:? }
2023: ${remote_state_file_path:= " terraform-state" }
@@ -44,10 +47,25 @@ wget -qN https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform
4447apt-get install unzip
4548unzip -o terraform_${TERRAFORM_VERSION} _linux_amd64.zip -d /usr/bin
4649
50+ # 调用 AssumeRole API 获取临时凭证
51+ response=$( aliyun sts AssumeRole --RoleArn ${terraform_role_arn} --RoleSessionName " bosh-cpi-e2e-test" --access-key-id ${access_key} --access-key-secret ${secret_key} )
52+
53+ # 解析返回结果中的 AccessKeyId, AccessKeySecret 和 SecurityToken
54+ ACCESS_KEY_ID=$( echo $response | jq -r ' .Credentials.AccessKeyId' )
55+ ACCESS_KEY_SECRET=$( echo $response | jq -r ' .Credentials.AccessKeySecret' )
56+ SECURITY_TOKEN=$( echo $response | jq -r ' .Credentials.SecurityToken' )
57+
58+ # 检查是否成功获取到凭证
59+ if [ -z " $ACCESS_KEY_ID " ] || [ -z " $ACCESS_KEY_SECRET " ]; then
60+ echo " Failed to get credentials."
61+ exit 1
62+ fi
63+
4764pushd ${terraform_source}
4865 terraform init \
49- -backend-config=" access_key=${remote_state_access_key} " \
50- -backend-config=" secret_key=${remote_state_secret_key} " \
66+ -backend-config=" access_key=${ACCESS_KEY_ID} " \
67+ -backend-config=" secret_key=${ACCESS_KEY_SECRET} " \
68+ -backend-config=" security_token=${SECURITY_TOKEN} " \
5169 -backend-config=" region=${remote_state_region} " \
5270 -backend-config=" bucket=${remote_state_bucket} " \
5371 -backend-config=" prefix=${remote_state_file_path} " \
@@ -59,10 +77,10 @@ pushd ${terraform_source}
5977
6078 if [[ ${action} == " destroy" ]]; then
6179 echo -e " ******** Try to delete environment ********\n"
62- terraform apply -destroy -auto-approve -var access_key=${access_key } -var secret_key=${secret_key } -var region=${region} -var env_name=${env_name} -var " public_key=${public_key} "
80+ terraform apply -destroy -auto-approve -var access_key=${ACCESS_KEY_ID } -var secret_key=${ACCESS_KEY_SECRET} -var security_token= ${SECURITY_TOKEN } -var region=${region} -var env_name=${env_name} -var " public_key=${public_key} "
6381 else
6482 echo -e " ******** Try to build environment ********\n"
65- terraform apply --auto-approve -var access_key=${access_key } -var secret_key=${secret_key } -var region=${region} -var env_name=${env_name} -var " public_key=${public_key} "
83+ terraform apply --auto-approve -var access_key=${ACCESS_KEY_ID } -var secret_key=${ACCESS_KEY_SECRET} -var security_token= ${SECURITY_TOKEN } -var region=${region} -var env_name=${env_name} -var " public_key=${public_key} "
6684 if [[ $? -eq 0 ]]; then
6785 echo -e " ******** Build terraform environment successfully ******** \n"
6886 ls -al
@@ -72,7 +90,7 @@ pushd ${terraform_source}
7290 echo " }" >> ${output_path} /${output_module}
7391 elif [[ ${delete_on_failure} = true ]]; then
7492 echo -e " ******** Destroy terraform environment... ******** \n"
75- terraform apply -destroy -auto-approve -var access_key=${access_key } -var secret_key=${secret_key } -var region=${region} -var env_name=${env_name} -var " public_key=${public_key} "
93+ terraform apply -destroy -auto-approve -var access_key=${ACCESS_KEY_ID } -var secret_key=${ACCESS_KEY_SECRET} -var security_token= ${SECURITY_TOKEN } -var region=${region} -var env_name=${env_name} -var " public_key=${public_key} "
7694 fi
7795 fi
7896
0 commit comments