Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)
一,引言
之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中。然后还有讲到 Azure Resource Common Module 的 TF 代码的封装。之前还在Azure Terraform 第四节讲到利用 Azure Storage 远程状态文件存储。那么今天我们尝试将封装过 Common Module 的 TF 代码,结合 TF 状态文件远端存储,实现自动化部署基础资源

--------------------Azure Terraform 系列--------------------
1,Azure Terraform(一)入门简介
2,Azure Terraform(二)语法详解
3,Azure Terraform(三)部署 Web 应用程序
4,Azure Terraform(四)状态文件存储
5,Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
6,Azure Terraform(六)Common Module
7,Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)
二,正文
1,Azure DevOps 创建项目
输入项目名称 “CnBateBlogWeb_Infrastructure_V2”,点击 “Create” 创建项目。

2,配置Azure DevOps Release Pipeline 环境
2.1,添加 Release Pipeline
选择 “ Pipelines=》Releases”,点击 “New pipeline” 创建新的 pipeline

模板选择 “Empty job”,并且点击图中箭头所指的 “x” 关闭页面

Stage 页面,输入新的 Stage name:“Deploy Infra”,并且关闭此页面

2.2,添加 Artifacts
接下来需要添加 “artifact”,点击图中的 “+ Add an artiface”

选择 ”GitHub“ ,
Service 添加新的 connection:"github_connection_xxxxx"
Source(repository)选择:TF 代码库
Default branch:“remote_stats”
Default version:”Latest from the default branch“
点击 "Add" 添加 artifact。

2.3,添加 task
接下来添加 ”Deploy Infra“ Stages 相关 task

2.3.1,创建远程存储相关 job
点击图中圈中的 ”+“,添加 new task,并且在右边的输入框中输入 ”Azure CLI“,选中图中的 ”Azure CLI“

注意,之前在 一篇文章中讲到远端存储时,需要提前创建 Azure Storage Accunt 和 Azure KeyVault。Azure Storage Account 的 Container 中用来存储 TF 的状态文件,Azure KeyVault 存储 Azure Storage Account 的 access_key(访问密钥),之前是手动创建,主要是为了给大家演示。今天,我们通过 Azure CLI 创建快捷操作,并且 Azure CLI 这个 task 移至 Azure Releases Pipeline 中。
输入相关参数:
Display name:”Azure CLI :Create Storage Account,Key Vault And Set KeyVault Secret“
Azure Resource Manager connection:选择自己的订阅 id
Script Type(脚本类型)选择:”Shell“
Script Location(脚本位置)选择:”Inline script“(内联脚本)

Inline Script(脚本)在 Azure 中创建以下资源:
1)Storage 存储帐户
2)Blob存储容器(将存储状态文件)
3)密钥库,将用于安全地存储Storage 的访问密钥
Inline Script(内联脚本)如下所示:
# create azure resource group
az group create --location eastasia --name $(terraform_rg)
# create azure storage account
az storage account create --name $(storage_account) --resource-group $(terraform_rg) --location eastasia --sku Standard_LRS
# create storage account container for tf state
az storage container create --name $(storage_account_container) --account-name $(storage_account)
# query storage key and set variable
ACCOUNT_KEY=$(az storage account keys list --resource-group $(terraform_rg) --account-name $(storage_account) --query "[?keyName == 'key1'][value]" --output tsv)
# create azure keyvault
az keyvault create --name $(keyvault) --resource-group $(terraform_rg) --location eastasia --enable-soft-delete false
# set keyvault secret,secret value is ACCOUNT_KEY
az keyvault secret set --name $(keyvault_sc) --vault-name $(keyvault) --value $ACCOUNT_KEY
大家有注意到没 ”Inline Script“ 中既有 Pipeline 设置的变量,又有自定义的系统变量
如果是获取 pipeline 中设置变量:$(varivale_name)
如果是获取自定义系统变量:$variable_name
2.3.2,添加 pipeline variables
接下来设置 pipeline 变量,选择 ”Variables“,点击 ”+Add“,添加相应的参数设置
| Name | Value |
| keyvault | cnbate-terraform-kv6 |
| keyvault_sc | terraform-stste-storage-key |
| storage_account | cnbateterraformstorage |
| storage_account_container | terraform-state |
| terraform_rg | Web_Test_TF_RG |

2.3.3,添加 Azure KeyVault 获取 Access Secret Job
输入 ”Azure Key Vault“,点击 ”Add“ 添加 Azure Key Vault Job

输入相关参数:
Display name:“Azure Key Vault:Get Storage Access Secret”
Azure subscription 选择当前自己的订阅
Key vault 选择:“cnbate-terraform-kv6”
Secrets filter(机密过滤器):“terraform-stste-storage-key”,如果选择默认 “*”,则下载选定密钥库的所有机密

2.3.4,添加 Terraform install Job
搜索 “Terraform”,选择 “Terraform tool install”

修改相应参数:
Display name:"Install Terraform 0.14.3"
Version(版本):”0.14.3“

2.3.5,添加 Terraform 初始化 Job
搜索 “Terraform”,点击 “Add”

修改相应参数:
Display name:“Terraform:Init”
Configuration directory:选择到 ”~/src/model“ 这个目录下,也就是 terraform 代码的工作目录
Command 选择:“init”
Addition command arguments:”-backend-config="access_key=$(terraform-stste-storage-key)"“ (tf 代码中没有access_key 的配置信息,所以我们需要在 terraform init 过程中传递此参数)
AzureRM backend configuration:
Azure subscription:选择当前自己的订阅
Resource group:”Web_Test_TF_RG“
Storage account:”cnbateterraformstorage“
Container:”terraform-state“
Key:”cnbate.terraform.stats“

2.3.6,添加 Terraform 生成部署计划 Job
搜索 ”Terraform“,点击 ”Add“

修改相关参数:
Display name:”Terraform:plan“
Command 选择:”plan“
Configuration directory: 选择 terraform 代码的工作目录
Azure subscription 选择当前自己的Azure订阅

2.3.7,添加 Terraform 执行部署计划 Job
搜索 ”Terraform“,点击 ”Add“

修改相应参数:
Display name:”Terraform:auto-apply“
Command:”validate and apply“
Configuration directory:选择 terraform 代码的工作目录
Additional command arguments:“-auto-approve”
Azure subscription:选择当前自己订阅

2.3.8,保存 Azure Pipeline 设置,并且设置 Pipeline 的触发条件
修改当前 pipeline 名称,并且点击 “Save” 进行保存

设置 pipeline 的触发条件
开启持续部署触发,每次在所选存储库中发生Git推送时触发pipeline,接下来添加分支筛选条件
Type:Include,Branch:“remote_stats”,也就是说每当 “remote_stats” 发生git 推送的时候,触发此 pipeline
设置完毕后,点击 “Save” 进行保存

3,测试Azure DevOps 自动化部署基础设施资源
先登录 Azure Portal 确保 “Web_Test_TF_RG” 资源组中不存在任何资源

手动触发 Azure Release Pipeline
点击 “Create release” 进行手动触发

稍等片刻,等待pipeline 执行完毕

查看 “Web_Test_TF_RG” 中的所有资源

Bingo,大功告成!!!!
*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
三,结尾
今天的实战操作比较多,全都是需要在Azure DevOps 上进行操作的,大家要多加练习,熟能生巧。本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还希望多多包涵,并且指出不足之处。
参考资料:Terraform 官方,azurerm 文档,Azure CLI 文档
Terraform_Cnbate_Traffic_Manager github:https://github.com/yunqian44/Terraform_Cnbate_Traffic_Manager
作者:Allen
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)的更多相关文章
- Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...
- 基于云原生DevOps服务自动化部署前端项目学习总结
本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...
- 运维与自动化系列④自动化部署基础与git
运维与自动化系列④自动化部署基础与git 自动化部署基础与git 一:上一篇的代码是保存在本地,但是在生产环境当中是由版本控制进行代码管理,以便于发布代码和回滚,一般是使用gitlib比较多,另外还有 ...
- 运维与自动化系列③自动化部署基础与shell脚本实现
自动化部署基础与shell脚本实现 关于自动化的基础知识: 1.1:当前代码部署的实现方式: 运维纯手工scp到web服务器纯手工登录git服务器执行git pull或svn服务器执行svn upda ...
- 利用Jenkins实现项目自动化部署
1.安装Jenkins,参考上一篇博客:安装Jenkins 安装Java 安装tomcat 安装maven 2.全局工具配置,填写好后点击save 3.安装git plugin插件
- Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...
- Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布
一,引言 Azure Pipeline 管道是一个自动化过程:但是往往我们由于某种原因,需要在多个阶段之前获得批准之后再继续下一步流程,所以我们可以向Azure Pipeline 管道添加审批!批准流 ...
- Azure Terraform(十)利用 Azure DevOps 的条件语句选择发布环境
一,引言 之前我讲过的所有的案例中,都是将整个Azure Resource 部署到同一个订阅下,没有做到灵活的在 Azure Pipeline 在运行前选择需要部署的环境.在实际的项目开发中,我们也会 ...
- Azure Terraform(六)Common Module
一,引言 之前我们在使用 Terraform 构筑一下 Azure 云资源的时候,直接将所以需要创建的资源全面写在 main.tf 这个文件中,这样写主要是为了演示使用,但是在实际的 Terrafor ...
随机推荐
- JavaScript实现自定义右键菜单
JavaScript实现自定义右键菜单,思路如下: 1. 屏蔽默认右键事件: 2. 隐藏自定义的菜单模块(如div.ul等): 3. 右键点击特定或非特定区域,显示菜单模块: 4. 再次点击,隐藏菜单 ...
- 回顾 2020 年 GitHub 的大事件,你知道多少?
作者:HelloGitHub-小鱼干 这里是 HelloGitHub 出品的年度盘点系列,本期我们将盘点 GitHub 在 2020 发生的大事件,回顾一下今年 GitHub 给我们带来了那些惊喜.故 ...
- OSPF --- 不规则区域实验
OSPF不规则区域实验: 一.知识点整理: OSPF中路由器的角色(看图): 骨干路由器:路由器所有接口属于area 0 -->R3 非骨干路由器:路由器所有接口属于非area 0 --&g ...
- 类似818tu.c微信小说分销系统设计之多公众号网页授权自动登录源码分享
/** 转载请保留原地址以及版权声明,请勿恶意修改 * 作者:杨浩瑞 QQ:1420213383 独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...
- Selenium ActionChains、TouchAction方法
ActionChains和TouchAction可以用来模拟点击.双击.滑动等事件.ActionChains用于执行PC端的鼠标移动.按键.拖拽等事件:TouchActions用法与ActionCha ...
- 【vue】入门介绍
一.前端开发工具vscode 前端代码编写工具,使用vscode:vscode官网 安装好之后,可以先装如下几个插件,方便后续的开发. 二.编写代码 1.vscode快捷键生成html代码 在vsco ...
- centos7中redis安装配置
1.官网下载对应版本,本例以5.0.5为例 2.tar -zxvf xxxxx 并mv到安装目录 3.进入redis-5.0.5目录下,执行编译命令 make 4.编译完成后,经redis安装到指定目 ...
- 云计算之2---KVM
介绍 KVM KVM:就是Keyboard Video Mouse的缩写.KVM 交换机通过直接连接键盘.视频和鼠标 (KVM) 端口,让您能够访问和控制计算机.KVM 技术无需目标服务器修改软件.这 ...
- Spring中ApplicationContextAware接口的用法
1.为什么使用AppplicationContextAware? ApplicationContext的BeanFactory 的子类, 拥有更强大的功能,ApplicationContext可以在服 ...
- .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ HelloWorld)--学习笔记
2.6.3 RabbitMQ -- HelloWorld 发送端 接收端 rabbitmq container 发送信息 https://www.rabbitmq.com/tutorials/tuto ...