在上一篇文章这份攻略帮助你分分钟构建出“幻兽帕鲁游戏”极致体验【上】中写了,极狐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:lightentrypoint: [""]# Script to be executed before each stage
default:tags:- terraformbefore_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: validatescript:- terraform validate# To check the plan of the infrastructure
plan:stage: planscript:- 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 官网查看。