本周真正完成用GitLab做IaC的CI/CD,
先在GitLab所在主机安装runner,
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb",
sudo dpkg -i gitlab-runner_amd64.deb,
然后把runner注册到GitLab上,sudo gitlab-runner register,
注册过程中需要填的信息需要在GitLab中查询,执行环境我这里选的shell,
然后是在pycharm里准备CI/CD所需的文件,
terraform的文件,就是上周实践的,这里需要新介绍的是.gitlab-ci.yml,
需要规划多个阶段,以及每个阶段要做的事,以terraform对OpenStack的IaC为例,可以分三个阶段,初始化、计划、执行,跟手动执行的过程是一样的,唯一不同的是,GitLab在做CI/CD的过程中,每个阶段都是独立的,如果下一个阶段需要使用上一阶段的输出,需要通过cache方法来解决,
stages:
- init
- plan
- apply
init:
stage: init
script:
- terraform init
cache:
paths:
- .terraform.lock.hcl
- terraform.tfstate
- terraform.tfstate.backup
- .terraform/*
- plan
tags:
- ubuntu
plan:
stage: plan
script:
- terraform plan --out plan
cache:
paths:
- .terraform.lock.hcl
- terraform.tfstate
- terraform.tfstate.backup
- .terraform/*
- plan
tags:
- ubuntu
apply:
stage: apply
script:
- terraform apply --auto-approve plan
cache:
paths:
- .terraform.lock.hcl
- terraform.tfstate
- terraform.tfstate.backup
- .terraform/*
- plan
tags:
- ubuntu
把所有文件都提交和推送到Gitlab,
CI/CD就自动跑起来了,一个阶段一个阶段执行,直到完全成功,
在OpenStack上查看,虚机出来了,阶段性的CI/CD实践这就完事儿了,后面有时间再研究用GitLab做容器在K8S中的CI/CD实践。
原文始发于微信公众号(云计算和网络安全技术实践):用GitLab做IaC的CI/CD
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论