天天看点

Terraform 实践后篇 - 使用Terraform部署云资源

接下来我们就实际演示下terraform是怎么部署资源的,以azure为例,我们首先需要准备azure cli,cli可以用来做身份验证,terraform本身是没有身份验证功能的,如何判定我们是否有权限进行资源的部署/更改主要还是靠云平台本身,所以我们需要首先验证好我们的身份,然后才能进行云资源的部署和变更。

azure cli可以使用service principle进行登录,我们首先可以先创建一个sp

$sp = new-azadserviceprincipal -scope /subscriptions/6dxxxxxxxxxxxxxxxxxx

Terraform 实践后篇 - 使用Terraform部署云资源

可以在application registration里看到新建的sp

Terraform 实践后篇 - 使用Terraform部署云资源

然后可以针对这个sp进行授权,可以先给这个sp一个资源组的contributor权限或者subscription权限

接下来就可以在azure cli里登录了,首先将登录环境指定为中国

az cloud set --name azurechinacloud

Terraform 实践后篇 - 使用Terraform部署云资源

az login

弹出浏览器登录窗口,输入密码登陆

Terraform 实践后篇 - 使用Terraform部署云资源

云环境已经准备完毕,接下来就可以编写terraform代码了,如果只是简单创建一台虚拟机,其实terraform代码会很简单,至于创建虚拟机时候需要指定的参数,比如虚拟机的名称,size等等我们都可以定义成变量,这点和其他编程语言非常类似

terraform 0.13以上的版本需要按照以下方式先定义provider,required provider里要先制定好要是用的provider版本,可以是一个固定的版本,也可以指定一个范围

接下来就是资源的定义

locals里定义的一般都是一些可重复使用的常量,在部署时不需要像变量一样需要赋值,而是可以直接拿来用

下边开始就是azure资源的定义了,包括资源组,虚拟网络,网卡等

定义好iac的代码,首先我们先使用terraform init下载需要的provider,可以看到正在下载terraform azurerm provider

Terraform 实践后篇 - 使用Terraform部署云资源

下载完成后,尝试进行plan来看下部署时将要发生的变化,可以看到前边有很多+,代表这些资源都是会被添加的,如果是destroy的话可能会看到很多-的标志,另外,terraform做资源的变更其实主要是看tfstate里的状态,我们因为是个空的state,所以创建任何资源都是会被判断为新增,如果是一个已有的state的话,那就要先看看state里都有啥了

Terraform 实践后篇 - 使用Terraform部署云资源

接下来直接apply进行创建,输入yes进行确认

Terraform 实践后篇 - 使用Terraform部署云资源

    可以看到资源一直在创建,这个输出界面感觉比arm template要友好不少

Terraform 实践后篇 - 使用Terraform部署云资源

部署完成后,登录portal,可以看到资源已经创建好了

Terraform 实践后篇 - 使用Terraform部署云资源

继续阅读