博客
关于我
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。

三,结尾

参考资料:[链接] 作者: 版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
你可能感兴趣的文章
Python和RF编写接口自动化
查看>>
python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
查看>>
python和java哪个更值得学——来自知乎高赞回答
查看>>
python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
查看>>
Python命名中尾随下划线有什么好处?
查看>>
Python启动脚本
查看>>
Python听写汇总结果
查看>>
python吊打Excel?屁!那是你不会用!
查看>>
Python合并两张图片 | 先叠透明度再合并 (附Demo)
查看>>
python各进制的表述与转换
查看>>
python各种库安装
查看>>
python可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
查看>>
python可维护性_使用这7大神器,让你的Python 代码更容易于维护
查看>>
python变量的详细教程_Python零基础入门教程之语法入门[变量](第二期)
查看>>
Python变量命名方法-ChatGPT4o作答
查看>>
Python变量与运算符
查看>>
python单元测试之unittest
查看>>
Python单元测试unittest实战
查看>>
python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
查看>>
Python化身“安全老中医”:一键搞定工控系统漏洞,从零基础到精通,收藏这篇就够了!
查看>>