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

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

一,引言

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

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

二,正文

1,Azure Providers

Terraform作为一个可扩展的工具,通过Provider支持新的基础架构。Provider可以理解为上游API的逻辑抽象,他们负责理解API交互并暴露资源。不同云厂商都需要提供一个Provider来实现对自家基础设施的统一管理,例如Azure、AWS、GCP、Kubernetes、阿里云等。官方罗列的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,features字段是必要的。如果使用的是1.x版本,则不需要features。

你可以通过terraform init来验证以上解释。

2,基本的Terraform 配置文件

我们知道,Terraform通过定义资源模块来创建和管理云资源。以下是一个基本的Terraform配置文件示例:
resource "azurerm_resource_group" "example" {      name = "Web_Test_TF_RG"      location = "East Asia"    }
  • resource:表示我们将创建一个类型为“azurerm_resource_group”的资源组。
  • example:表示我们为当前新创建的资源组命名为“Web_Test_TF_RG”。
  • name:定义资源组的名称为“Web_Test_TF_RG”。
  • location:定义资源组的位置为“East Asia”。

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

3,Terraform 状态管理

执行`terraform apply`命令后,Terraform会在项目文件夹中生成以下文件:
  • terraform.tfstate:包含已部署到Azure的所有状态信息。
  • .terraform.tfstate.lock.info:表示部署过程中加锁的文件。

有人可能会问:为什么要加锁?

原因很简单,类似于对数据库的操作,对同一数据的修改或删除需要加锁处理。Terraform的状态文件加锁也是出于同样的道理。

4,Terraform扩展知识点

你知道Azure有多个版本,常用的有Azure Global和Azure China。如果我们在Terraform的Provider中不指定Azure环境,Terraform会默认将资源部署到Azure Global。如果使用Azure China(世纪互联版的Azure),则必须在Provider中指定Azure环境。

environment的可能取值包括:

  • public(默认)
  • usgovernment
  • german
  • china

如果不想在Provider中指定云环境,可以通过设置环境变量来实现:

setx ARM_ENVIRONMENT china

完整示例:

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

今天的分享到此结束。虽然没有介绍新的内容,但通过对代码参数的介绍,让我们能够更好地理解Terraform。

三,结尾

参考资料:[链接] 作者: 版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
你可能感兴趣的文章
Nginx 反向代理解决跨域问题
查看>>
nginx 后端获取真实ip
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 我们必须知道的那些事
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
查看>>
OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
查看>>
Objective-C实现A-Star算法(附完整源码)
查看>>
Objective-C实现area under curve曲线下面积算法(附完整源码)
查看>>
Objective-C实现atoi函数功能(附完整源码)
查看>>
Objective-C实现base64加密和base64解密算法(附完整源码)
查看>>
Objective-C实现base85 编码算法(附完整源码)
查看>>
Objective-C实现basic graphs基本图算法(附完整源码)
查看>>
Objective-C实现BCC校验计算(附完整源码)
查看>>
Objective-C实现bead sort珠排序算法(附完整源码)
查看>>
Objective-C实现BeadSort珠排序算法(附完整源码)
查看>>
Objective-C实现bellman ford贝尔曼福特算法(附完整源码)
查看>>
Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
查看>>
Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
查看>>
Objective-C实现BellmanFord贝尔曼-福特算法(附完整源码)
查看>>