博客
关于我
Azure Terraform(二)语法详解
阅读量:397 次
发布时间:2019-03-05

本文共 2145 字,大约阅读时间需要 7 分钟。

一,引言

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

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

二,正文

1,Azure Providers

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

大家可以点击此连接查看具体的 Terraform 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 。

φ(゜▽゜*)♪是🐱‍🏍🐱‍🏍🐱‍🏍🐱‍🏍🐱‍🏍!

三,结尾

参考资料:,

作者: 

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

你可能感兴趣的文章
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>