一,引言

  上篇文章开始,我们简单介绍了以下通过基础设施管理工具----- Terraform,通过它来统一管理复杂的云基础设施资源。作为入门演示,使用Terraform 部署Azure 资源组的方式直观的感受到iac 工具带来的强大便利。接下来,今天介绍 Terraform 语法详解,从代码的角度来理解Azure 各个资源模块更好的理解如果部署资源。

-------------------- Azure Terraform 系列 --------------------

1,Azure Terraform(一)入门简介

2,Azure Terraform(二)语法详解

二,正文

1,Azure Providers

Terraform 作为同一个可以可扩展的工具,是通过 Provider 来支持新的基础架构。Provider 是上游API的逻辑抽象。他们负责理解API交互并暴露资源。我们可以将 Provider 可以理解为各个云厂商提供的与云资源交互的后端驱动,不同的基础设施提供商都需要提供一个Provider来实现对自家基础设施的统一管理,例如我们熟知的 Azure,AWS,GCP,Kubernetes,Aliyun等等。根据官方罗列的 官方 Providers 和验证过的 Providers,超过了600多个。

大家可以点击此连接查看具体的 Terraform Providers :https://registry.terraform.io/browse/providers

那么我们想指定 Terraform Azure Provider 怎么写?

provider "azurerm" {
version = "~>2.0"
features {}
}

version ="~>2.0" ,表示我们要使用 azure provider 的版本为 >2.0

features:表示自定义某些Azure提供程序资源的行为,我们目前使用的是 azure provider 的版本 2.x,如果使用的 azure provider 的版本为 1.x,则不需要 features

terraform init 来验证以上的解释

(1)provider version > 2.0

(2)provider version = 1.33

2,基本的Terraform 配置文件

resource "azurerm_resource_group" "example" {
name = "Web_Test_TF_RG"
location = "East Asia"
}

resource:表示我们将创建类型为 “azurerm_resource_group” 新的资源组

example:表示我们为当前新创建的资源组的 terraform module 起的名称

当前新创建的资源组,我们为其定义了两个参数,分别为 “name” 和 “location”

name:表示为当前即将创建的资源组的名称为 “Web_Test_TF_RG

location:表示当前资源组所在的位置为 “East Asia

接下就是执行部署计划的过程了 (plan 生成执行计划过程我就不在演示了)

3,Terraform 状态管理

terraform apply

执行计划部署完成后,会在Terraform 项目文件夹中生成 “terraform.tfstate” 的文件和 “.terraform.tfstate.lock.info”的文件

terraform.tfstate:当前文件中包含了因为它包含有关已部署到Azure的内容的所有状态信息

terraform.tfstate.lock.info:这个文件从名字上就可以看出来,部署过程中加锁。这时候就有人疑惑了,为什么要加锁 ?

原因很简单,就那操作数据库来说,对同一数据的修改,或者删除的时候,需要加锁处理。这里的terraform 的状态文件加锁也是同样的道理。

4,Terraform扩展知识点

其实我们都知道,Azure 有好几个版本,我们一般常用的就是 Azure Global,Azure China,如果我们在 Azure Provider 中不指定哪个Azure 环境,Terraform 会默认认为我们是将云资源部署在 Azure Global 上的。如果我们用的是Azure China(世纪互联版的Azure),那我就必须得在 Provider 中指定Azure 环境

environment 的值可能为:

  (1)public(默认)

  (2)usgovernment

  (3)german

  (4)china

注意:如果不想在Provider 中指定云环境,我们可以设置环境变量

setx ARM_ENVIRONMENT china

完整示例

provider "azurerm" {
version = "~>2.0"
environment = "china"
features {}
}

ok,今天的分享就到此结束,今天也没有介绍新的内容,基本上就是对昨天代码的参数介绍,让我们能够更好的理解 Terraform 。

φ(゜▽゜*)♪是‍

Azure Terraform(二)语法详解的更多相关文章

  1. Velocity魔法堂系列二:VTL语法详解

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  2. Java8初体验(二)Stream语法详解(转)

    本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com上篇文章Java8初体验(一 ...

  3. Java8初体验(二)Stream语法详解---符合人的思维模式,数据源--》stream-->干什么事(具体怎么做,就交给Stream)--》聚合

    Function.identity()是什么? // 将Stream转换成容器或Map Stream<String> stream = Stream.of("I", & ...

  4. Thymeleaf3语法详解和实战

    Thymeleaf3语法详解 Thymeleaf是Spring boot推荐使用的模版引擎,除此之外常见的还有Freemarker和Jsp.Jsp应该是我们最早接触的模版引擎.而Freemarker工 ...

  5. mysql用户授权、数据库权限管理、sql语法详解

    mysql用户授权.数据库权限管理.sql语法详解 —— NiceCui 某个数据库所有的权限 ALL 后面+ PRIVILEGES SQL 某个数据库 特定的权限SQL mysql 授权语法 SQL ...

  6. Java8的Stream语法详解(转载)

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

  7. [持续交付实践] pipeline使用:语法详解

    一.引言 jenkins pipeline语法的发展如此之快用日新月异来形容也不为过,而目前国内对jenkins pipeline关注的人还非常少,相关的文章更是稀少,唯一看到w3c有篇相关的估计是直 ...

  8. Java 8系列之Stream的基本语法详解

    本文转至:https://blog.csdn.net/io_field/article/details/54971761 Stream系列: Java 8系列之Stream的基本语法详解 Java 8 ...

  9. spring AspectJ切入点语法详解 记录以便查阅

    AspectJ切入点语法详解 6.5.1  Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spri ...

随机推荐

  1. C语言精华——内存管理,很多学校学习不到的知识~

    在编写程序时,通常并不知道需要处理的数据量,或者难以评估所需处理数据量的变动程度.在这种情况下,要达到有效的资源利用--使用内存管理,必须在运行时动态地分配所需内存,并在使用完毕后尽早释放不需要的内存 ...

  2. 二:robot framework基本组成

    1.RF组成:套件.用例.关键字 套件:测试用例的集合,可以是一个模块的功能点的集合.也可以是很多模块功能点的集合 用例:一般是由多个关键字组成的 关键字:测试库.资源文件.用例所在文件的关键字表 2 ...

  3. C++反射机制:可变参数模板实现C++反射(二)

    1. 概要   2018年Bwar发布了<C++反射机制:可变参数模板实现C++反射>,文章非常实用,Bwar也见过好几个看了那篇文章后以同样方法实现反射的项目,也见过不少从我的文章抄过去 ...

  4. 【NOIP2015模拟11.4】JZOJ8月6日提高组T1 刷题计划

    [NOIP2015模拟11.4]JZOJ8月6日提高组T1 刷题计划 题目 题解 题意 有\(n\)道题,编号为1~\(n\) 给出\(m\)次操作 每次操作有3种类型 1 \(x\) 表示交了\(A ...

  5. Java面试专题-多线程篇(2)- 锁和线程池

  6. 老猿Python重难点知识博文汇总

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 除了相关教程外,老猿在学习过程中还写了大量的学习随笔,内容比较杂,文章内容也参差不齐,为了方便,老猿 ...

  7. PyQt(Python+Qt)学习随笔:树型部件QTreeWidget提供的currentItem当前项操作访问方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 当前项是指当前鼠标和键盘焦点所在项,在项可以进行选择操作时,当前项可以是选中状态,也可以是未选中状态 ...

  8. Get请求Test

    一.新建测试套 作为管理接口,可按功能分类,也可按业务逻辑分类,根目录下最多一级子目录.运行接口时,可按测试套为单位,整体运行. 二.选择请求类型,输入接口地址 根据接口文档中提供的接口请求类型及地址 ...

  9. CSS常用语法缩写

    使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.CSS常用语法缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如:#000000可以缩写为#000;#33669 ...

  10. 图 Graph

    本文主要内容为:图的定义以及基本术语 图的定义 图 图G的组成:由 数据元素的集合E 和 数据间的关系集合E 组成,记作:G = <V, E> 顶点 (vertex):数据元素,V就是顶点 ...