欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Terraform集成簡單Gitlab?CI方案詳解

 更新時間:2022年07月05日 12:16:53   作者:kaliarch  
這篇文章主要為大家介紹了Terraform?+?Gitlab?CI簡單集成方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一 背景

利用Gitlab CI實現(xiàn)基礎(chǔ)設(shè)施編排自動化,用戶后續(xù)針對基礎(chǔ)設(shè)施的管理使用Gitlab完成,提交基礎(chǔ)設(shè)施變更后,會出發(fā)pr進行Gitlab CI流水線執(zhí)行,從而實現(xiàn)基礎(chǔ)設(shè)施DevOPS流程。

二 流程架構(gòu)

2.1 架構(gòu)圖

2.2 流程

運維研發(fā)編寫目標云的基于Terraform的資源清單文件,同事項目內(nèi)管理Gitlab CI流程,在K8s不同NS下注冊有對應(yīng)的runner,當在不同分支下可以觸發(fā)不同ns下的CI流程。

  • 開發(fā)或運維人員提交代碼。
  • 部署在對應(yīng)名稱空間下的runner執(zhí)行流程,創(chuàng)建運行單個Stage的POD來運行Terraform對應(yīng)命令,例如init/fmt/play/apply等。
  • 如果要對云上資源進行變更,修改代碼,再次提交pr,出發(fā)更新流水線。
  • 如果需要銷毀,根據(jù)CI文件配置提交BUILD為destroy,觸發(fā)云上銷毀動作。

三 預置條件

  • Gitlab 服務(wù)器
  • 注冊有項目的gitlab-runner
  • K8s集群
  • 騰訊云AK賬號

四 配置

4.1 Gitlab CI配置

4.1.1 .gitlab.yaml

variables:
  # PHASE: BUILD|DESTROY
  PHASE: DESTROY
#  PROXY: http://squiduser:xxzx789@43.134.199.162:3128
#  PROXY: http://squiduser:xxzx789@43.154.230.17:3128
  REGION: "ap-guangzhou"
  PLAN_JSON: plan.json
  BACKEND_CONF: "backend_oss.conf"
#
before_script:
#  - apk add --no-cache curl git jq
  - apk add --no-cache jq
  - export http_proxy=${SQUID_PROXY}
  - export https_proxy=${SQUID_PROXY}
  - export TENCENTCLOUD_SECRET_KEY=${TENCENTCLOUD_SECRET_KEY}
  - export TENCENTCLOUD_SECRET_ID=${TENCENTCLOUD_SECRET_ID}
  - export TF_REGISTRY_CLIENT_TIMEOUT=120000
  - export CHECKPOINT_TIMEOUT=500000
  - export TF_REGISTRY_DISCOVERY_RETRY=5
  - alias convert_report="jq -r '([.resource_changes[]?.change.actions?]|flatten)|{\"create\":(map(select(.==\"create\"))|length),\"update\":(map(select(.==\"update\"))|length),\"delete\":(map(select(.==\"delete\"))|length)}'"
# 配置緩存
cache:
  paths:
    - ${CI_PROJECT_DIR}/.terraform/*
stages:
  - init
  - validate
  - plan
  - deploy
Init:
  image:
    name: hashicorp/terraform:0.14.0
    entrypoint: [""]
  stage: init
  retry:
    max: 2
    when:
      - script_failure
  tags:
    - gitlab-runner-k8s-new
  script:
    - terraform version
    - terraform init -backend-config=${BACKEND_CONF}
  only:
    - dev
Validate:
  image:
    name: hashicorp/terraform:0.14.0
    entrypoint: [""]
  stage: validate
  tags:
    - gitlab-runner-k8s-new
  retry: 2
  script:
    - terraform init -backend-config=${BACKEND_CONF}
    - terraform validate
    - terraform fmt -check -recursive || echo 0
  cache:
    paths:
      - ${CI_PROJECT_DIR}/.terraform/*
    policy: pull
  allow_failure: true
Plan:
  image:
    name: hashicorp/terraform:0.14.0
    entrypoint: [""]
  stage: plan
  retry: 2
  tags:
    - gitlab-runner-k8s-new
  artifacts:
    paths:
      - plan.bin
      - app_config.zip
    expire_in: 2 week
  script:
    - terraform init -backend-config=${BACKEND_CONF}
    - terraform plan -input=false -out=plan.bin -var region=${REGION}
    - terraform show --json "plan.bin" | convert_report > ${PLAN_JSON}
    - cat ${PLAN_JSON}
  only:
    variables:
      - $PHASE == "BUILD"
Apply:
  image:
    name: hashicorp/terraform:0.14.0
    entrypoint: [""]
  when: manual
  stage: deploy
  retry: 2
  tags:
    - gitlab-runner-k8s-new
  script:
    - terraform init -backend-config=${BACKEND_CONF}
    - terraform apply -auto-approve -input=false plan.bin
  only:
    variables:
      - $PHASE == "BUILD"
  environment:
    name: snunv
Destroy:
  image:
    name: hashicorp/terraform:0.14.0
    entrypoint: [""]
  stage: deploy
  retry: 2
  tags:
    - gitlab-runner-k8s-new
  script:
    - terraform init -backend-config=${BACKEND_CONF}
    - terraform destroy -auto-approve -var region=${REGION}
  only:
    variables:
      - $PHASE == "DESTROY"

4.1.2 環(huán)境配置

利用Gitlab CI/CD的Environment進行環(huán)境管理。

4.2 Terraform資源

provider "tencentcloud" {
  region = var.region
}
terraform {
  required_providers {
    tencentcloud = {
      source  = "registry.terraform.io/tencentcloudstack/tencentcloud"
      version = ">=1.61.5"
    }
  }
  backend "cos" {}
}
# 輸入變量
variable "region" {
  type = string
}
# 再次僅為一個查詢示例
data "tencentcloud_instances" "cvm" {
}
# 輸出
output "result" {
  value = {
    cvm_result = { for k, v in data.tencentcloud_instances.cvm : k => v },
    count      = data.tencentcloud_instances.cvm.instance_list[*]
  }
}

為了terraform后端backend安全,將其存儲為單獨文件,可不同分支或環(huán)境進行修改

region = "ap-beijing"
bucket = "tfproject-1253329830"
prefix = "samxxxxitlab/dexxxxxt"

五 測試

  • init

  • validate

  • Plan

  • 手動應(yīng)用apply

查看應(yīng)用創(chuàng)建出的vpc

  • 制品下載

  • 銷毀

修改gitlabci文件,銷毀

六 注意事項

  • 需要K8s集群配置pv存儲卷來實現(xiàn)跨stage的任務(wù)cache。
  • 使用gitlab ci 環(huán)境管理來對執(zhí)行ci/cd的人員隱藏密鑰信息。
  • 后期可以使用gitlab 來進行變量管理。

本文僅實現(xiàn)簡單的Terraform + Gitlab CI 基礎(chǔ)設(shè)施編排集成,未將Gitlab CI的配置文件進行抽離模版化,未與Ansible進行集成實施配置管理。

以上就是Terraform集成簡單Gitlab CI方案詳解的詳細內(nèi)容,更多關(guān)于Terraform集成Gitlab CI的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決使用IDE Run運行出錯package pack/test is not in GOROOT (/usr/local/go/src/pack/test)

    解決使用IDE Run運行出錯package pack/test is not in GOROOT (/usr/loca

    這篇文章主要介紹了解決使用IDE Run運行出錯package pack/test is not in GOROOT (/usr/local/go/src/pack/test),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 刪除SVN三種方法delSvn(windows+linux)

    刪除SVN三種方法delSvn(windows+linux)

    今天想清除目錄下的SVN信息,在網(wǎng)上找了找,說是有三種方法
    2012-03-03
  • 最新Listary?v5.00.2843注冊碼?親測可用

    最新Listary?v5.00.2843注冊碼?親測可用

    listary是?windows?下一款可以快速搜索所有程序、文件,并且可以快速啟動程序和打開相應(yīng)文件的優(yōu)秀的搜索軟件,絕對比系統(tǒng)自帶搜索速度快很多,而且查詢功能豐富,本文給大家分享Listary?v5.00.2843注冊碼,感興趣的朋友一起看看吧
    2022-07-07
  • Eclipse插件安裝的八種方式總結(jié)

    Eclipse插件安裝的八種方式總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于Eclipse插件安裝的八種方式,現(xiàn)在開發(fā)java項目普遍使用idea了,但使用eclipse的也不少,如果要用的順手點,還是需要一些優(yōu)化和相關(guān)插件支持的,需要的朋友可以參考下
    2023-10-10
  • 電子郵件 退信原因大全

    電子郵件 退信原因大全

    我們可以對郵件多嘗試幾次發(fā)送,如果實在不行那就過一會再發(fā)送郵件。
    2009-06-06
  • 最新IDEA永久激活教程(支持最新2019.2版本)

    最新IDEA永久激活教程(支持最新2019.2版本)

    這篇文章主要介紹了最新IDEA永久激活教程,此教程已支持最新2019.2版本,適用Windows、Mac、Ubuntu等所有平臺,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 數(shù)據(jù)分析2020年全國各省高考成績分布情況

    數(shù)據(jù)分析2020年全國各省高考成績分布情況

    這篇文章主要介紹了數(shù)據(jù)分析2020年全國各省高考成績分布情況,順便可以用這個數(shù)據(jù)看每個省市的一本線劃分比率,還有其他相關(guān)的數(shù)據(jù),需要的朋友可以參考下
    2020-07-07
  • Ceph集群CephFS文件存儲核心概念及部署使用詳解

    Ceph集群CephFS文件存儲核心概念及部署使用詳解

    這篇文章主要為大家介紹了Ceph集群CephFS文件存儲核心概念及部署使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • VSCode遠程SSH免密登錄配置實現(xiàn)

    VSCode遠程SSH免密登錄配置實現(xiàn)

    這篇文章主要介紹了VSCode遠程SSH免密登錄配置實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • CommonLisp中解析命令行參數(shù)示例

    CommonLisp中解析命令行參數(shù)示例

    這篇文章主要為大家介紹了CommonLisp中解析命令行參數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08

最新評論