最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Terraform集成簡(jiǎn)單Gitlab?CI方案詳解

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

一 背景

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

二 流程架構(gòu)

2.1 架構(gòu)圖

2.2 流程

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

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

三 預(yù)置條件

  • Gitlab 服務(wù)器
  • 注冊(cè)有項(xiàng)目的gitlab-runner
  • K8s集群
  • 騰訊云AK賬號(hào)

四 配置

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進(jìn)行環(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
}
# 再次僅為一個(gè)查詢示例
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安全,將其存儲(chǔ)為單獨(dú)文件,可不同分支或環(huán)境進(jìn)行修改

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

五 測(cè)試

  • init

  • validate

  • Plan

  • 手動(dòng)應(yīng)用apply

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

  • 制品下載

  • 銷毀

修改gitlabci文件,銷毀

六 注意事項(xiàng)

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

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

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

相關(guān)文章

  • 微信小程序開發(fā)實(shí)例詳解

    微信小程序開發(fā)實(shí)例詳解

    這篇文章主要介紹了微信小程序開發(fā)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 本地部署DeepSeek-R大模型的詳細(xì)教程

    本地部署DeepSeek-R大模型的詳細(xì)教程

    今天我來(lái)分享一篇超級(jí)詳細(xì)的教程,教你如何在本地部署 DeepSeek-R1 大模型,讓你的電腦也能成為一個(gè)強(qiáng)大的 AI 工作站!這篇文章會(huì)從零開始,手把手帶你完成所有步驟,適合小白操作,廢話不多說(shuō),咱們直接開始吧
    2025-02-02
  • ceph集群RadosGW對(duì)象存儲(chǔ)使用詳解

    ceph集群RadosGW對(duì)象存儲(chǔ)使用詳解

    這篇文章主要為大家介紹了ceph集群RadosGW對(duì)象存儲(chǔ)使用詳解,有需要的,朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • DeepSeek?Window本地私有化部署教程

    DeepSeek?Window本地私有化部署教程

    本文介紹了如何在Windows電腦上本地部署DeepSeekR1大模型,包括安裝Ollama工具、下載DeepSeekR1模型、安裝圖形化交互界面CherryStudio等步驟,部署過(guò)程中強(qiáng)調(diào)了隱私安全和響應(yīng)速度快的優(yōu)勢(shì)
    2025-02-02
  • 薦書|程序員書單必不可少系列之算法篇

    薦書|程序員書單必不可少系列之算法篇

    在學(xué)習(xí)編程的道路上,算法是必不可少的一門課,最近就在重溫算法,所以下面這篇文章主要給各位程序員們推薦了幾本關(guān)于算法的相關(guān)書籍,需要的朋友們可以下載學(xué)習(xí),相信會(huì)對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值的,下面來(lái)一起看看吧。
    2017-07-07
  • MobaXterm詳細(xì)使用圖文教程(MobaXterm連接Linux服務(wù)器)

    MobaXterm詳細(xì)使用圖文教程(MobaXterm連接Linux服務(wù)器)

    這篇文章主要介紹了MobaXterm詳細(xì)使用教程,介紹一下如何設(shè)置并用MobaXterm來(lái)連接Linux服務(wù)器,本文介紹了三種連接方式:SSH,F(xiàn)TP,serial,以及幾個(gè)有用的設(shè)置和命令,需要的朋友可以參考下
    2023-05-05
  • 深入淺析ELK原理與簡(jiǎn)介

    深入淺析ELK原理與簡(jiǎn)介

    ELK是三個(gè)開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。這篇文章主要介紹了ELK原理與介紹,需要的朋友可以參考下
    2021-09-09
  • ChatGpt無(wú)法訪問(wèn)或錯(cuò)誤碼1020的幾種解決方案

    ChatGpt無(wú)法訪問(wèn)或錯(cuò)誤碼1020的幾種解決方案

    ChatGPT是一種語(yǔ)言模型,它被訓(xùn)練來(lái)對(duì)對(duì)話進(jìn)行建模,下面這篇文章主要給大家介紹了關(guān)于ChatGpt無(wú)法訪問(wèn)或錯(cuò)誤碼1020的幾種解決方案,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 使用ffmpeg 合并aac格式音頻文件的方法

    使用ffmpeg 合并aac格式音頻文件的方法

    FFmpeg是一套可以用來(lái)記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計(jì)算機(jī)程序。這篇文章主要介紹了使用ffmpeg 合并aac格式音頻文件的方法,需要的朋友可以參考下
    2020-03-03
  • Win10下配置VScode遠(yuǎn)程開發(fā)ssh-remote(免密登錄)

    Win10下配置VScode遠(yuǎn)程開發(fā)ssh-remote(免密登錄)

    在開發(fā)或者做實(shí)驗(yàn)的過(guò)程中,我們經(jīng)常會(huì)用到遠(yuǎn)程服務(wù)器或者Github的項(xiàng)目,本文詳細(xì)介紹的VScode配置免密ssh+remote,一旦連接成功,我們就可以在本地自己喜歡的IDE上操作遠(yuǎn)程服務(wù)器端的項(xiàng)目了
    2021-08-08

最新評(píng)論

郑州市| 九寨沟县| 家居| 栖霞市| 怀仁县| 新和县| 中阳县| 镇平县| 威宁| 育儿| 东辽县| 寿光市| 阳西县| 宁夏| 日照市| 沈丘县| 萝北县| 恩平市| 祁东县| 疏勒县| 兴仁县| 布尔津县| 昌江| 龙海市| 肃宁县| 龙山县| 松江区| 揭西县| 双柏县| 大化| 陇川县| 厦门市| 轮台县| 页游| 斗六市| 怀安县| 晋中市| 通化县| 吉林市| 民丰县| 连云港市|