在上一篇文章这份攻略帮助你分分钟构建出“幻兽帕鲁游戏”极致体验【上】中写了,极狐GitLab 将 terraform state 文件管理了起来。这篇文章将演示如何将所有的 terraform 文件存储到极狐GitLab 中,并且使用 CI/CD 自动实现 terraform 命令的执行。
在 DevOps 最佳实践中,所有的 terraform 文件也可以存储在极狐GitLab 项目中,做好版本控制,terraform 命令的执行也可以和极狐GitLab CI/CD 集成起来。
将 terraform 相关的文件存储在极狐GitLab 的项目中,比如 provider.tf、variable.tf、cvm.tf 等。
然后在项目根目录下创建一个 .gitlab-ci.yml文件,内容如下:
variables:
TF_DIR: ${CI_PROJECT_DIR}
TF_STATE_NAME: "jh-gitlab"
ADDRESS: "https://jihulab.com/api/v4/projects/183534/terraform/state/$TF_STATE_NAME"
# Stages of the pipeline
stages:
- validate
- plan
# Image which will use in each stage
image:
name: hashicorp/terraform:light
entrypoint: [""]
# Script to be executed before each stage
default:
tags:
- terraform
before_script:
- terraform --version
- export GITLAB_ACCESS_TOKEN=$JH_ACCESS_TOKEN
- cd ${TF_DIR}
- cp .terraformrc ~/
- terraform init -reconfigure
-backend-config="address=https://jihulab.com/api/v4/projects/183534/terraform/state/$TF_STATE_NAME"
-backend-config="lock_address=https://jihulab.com/api/v4/projects/183534/terraform/state/$TF_STATE_NAME/lock"
-backend-config="unlock_address=https://jihulab.com/api/v4/projects/183534/terraform/state/$TF_STATE_NAME/lock"
-backend-config="username=majinghe"
-backend-config="password=$GITLAB_ACCESS_TOKEN"
-backend-config="lock_method=POST"
-backend-config="unlock_method=DELETE"
-backend-config="retry_wait_min=5"
# To validate terraform files configuration
validate:
stage: validate
script:
- terraform validate
# To check the plan of the infrastructure
plan:
stage: plan
script:
- terraform plan
dependencies:
- validate
需要将 provider 需要的三个敏感信息:secret-id、 secret-key和极狐GitLab acess token 以环境变量的形式存储到极狐GitLab 上:
触发 CI/CD 流水线,可以看到流水线构建的结果:
其中,validate stage 的构建日志如下:
在这里插入图片描述
其中,plan stage 的构建日至如下:
其他的步骤诸如 apply、 destory也可以直接写在 CI/CD 流水线中,由于执行此步骤会直接创建对应的云资源或者删除对应的云资源,故不在此演示,但是原理是一样的。
使用 terraform 实现 IaC,通过操作代码就能实现云计算资源的创建和配置,整个过程能对变更做到版本控制,方便安全审计,而且用户无需直接操作云计算资源,权限管理也变得更加安全容易了。
使用上面的方法快速创建幻兽帕鲁游戏服务器,就会体验幻兽帕鲁游戏带来的酸爽体验了。
更多关于极狐GitLab 的最佳实践,可以搜索关注公众号【极狐GitLab】或者前往极狐GitLab 官网查看。