“基础设施即代码”是一种通过代码来定义计算和网络基础设施的方法,它可以应用于任何软件系统中。这样的代码放在代码版本控制系统中,具有可审查性、可重用性,并且符合测试惯例,还完全遵从持续交付的原则。该方法已经在过去的十年内广泛应用于快速增长的云计算平台中了,而且也将会成为接下来管理计算机基础设施的主要方式。对于目前而言,我们若想使用基础设施即代码的方式在Azure中部署资源,通常可以选择如下工具:
- PowerShell
- Ansible
- Puppet
- Chef
- Azure Resource Manager
- Etc.
除了上述工具以外,我们还可以选择使用Terraform来实现基础设施及代码的部署。那么接下来我们会和大家讨论如何使用Terraform从0开始在Azure上部署测试环境。本次我们主要讨论使用Terraform部署一个资源组和一个带有两个子网的VNet
下载并安装Terraform
若要使用Terraform实现IcA我们需要先下载并安装Terraform,具体可以参考如下链接:
https://www.terraform.io/downloads.html
准备TF文件
安装完Terraform以后,我们需要创建一些文件:
- main.tf :包含我们要创建的资源以及一些模块的调用
- Variables.tf:包含我们要创建资源的值
以下是main.tf,其中包含了一个资源组和一个带有两个子网的虚拟网络:
provider "azurerm" {
version = "2.0.0"
features {}
}
resource "azurerm_resource_group" "rg" {
name = var.resource_group_name
location = var.location
}
resource "azurerm_virtual_network" "vnet" {
name = var.virtual_network_name
location = var.location
resource_group_name = azurerm_resource_group.rg.name
address_space = [element(var.address_space, 1)]
}
resource "azurerm_subnet" "infra" {
name = var.subnetname_infra
virtual_network_name = azurerm_virtual_network.vnet.name
resource_group_name = azurerm_resource_group.rg.name
address_prefix = var.subnet_prefix_infra
}
resource "azurerm_subnet" "infra_subnet" {
name = var.subnet_name_DB
virtual_network_name = azurerm_virtual_network.vnet.name
resource_group_name = azurerm_resource_group.rg.name
address_prefix = var.subnet_prefix_DB
}
该variables.tf文件将包含我们将部署的资源值:
variable "resource_group_name" {
default = "TF-RG01"
}
variable "location" {
default = "southeastasia"
}
variable "virtual_network_name" {
default = "Prod-VNet"
}
variable "address_space" {
type = list(string)
default = [
"10.0.0.0/16"
]
}
variable "subnetname_infra" {
default = "infra"
}
variable "subnet_name_DB" {
default = "DB"
}
variable "subnet_prefix_infra" {
default = "10.0.1.0/24"
}
variable "subnet_prefix_DB" {
default = "10.0.2.0/24"
}
准备好上述文件以后,我们就应该开始执行部署命令了,首先我们会执行terraform init来初始化项目,这个过程中terraform会帮助我们下载对于的依赖项:
然后我们需要执行terraform plan来查看我们要在Azure订阅中执行的操作。若我们的tf文件编写有问题,也会在这一步的时候显示出来:
接下来,我们需要运行terraform apply来执行部署:
部署过程中需要我们输入yes来确认部署:
部署完成如下图所示:
此时我们可以登陆到Azure查看对应的资源是否创建成功:
如果要删除已经删除的部署,可以运行terraform destroy:
几分钟后,所有内容均已被删除:
来源:51CTO
作者:wuyvzhang
链接:https://blog.51cto.com/wuyvzhang/2479509