脚本模板化

在这个过程中或许你已经发现,上面写的脚本,每次创建不同业务的虚拟机的时候,需要在不同的脚本中去找参数进行修改,这样有一些麻烦,那么有没有办法把脚本模板化呢,答案当然有。

Terraform配置支持变量,具体介绍参考这里 https://www.terraform.io/docs/configuration/variables.html

有了变量后,我们把配置中常变更的属性值定义成变量集中放到一个tf文件,后续其它文件不需要做修改,只需要更改变量文件就可以了

这里以虚拟机规格为例给一个样例,首先定义一个变量

variable "flavor_name" {
    default = "s2.small.1"
    description = "Define the flavor name that will be used to create instance"}

在虚拟机资源中引用该变量而不是写死在这里。

resource "huaweicloud_compute_instance_v2" "server_example" {
  ......
  
  flavor_name  = "${var.flavor_name}"
  
  ......
  }

实现了变量模板化后,在执行terraform命名时可以指定该变量的值来创建不同规格的虚拟机,如下:

terraform apply -var "flavor_name=s1.large.2"

资源批量创建

如前面所说,有了上面的的模板后,基本上模板使用者和创建者角色可以分开了,基础的配置基本也就入门了,80%的case都可以应对了,接下来介绍一些更高级的能力。

首先我们看下如何批量创建相同类型的虚拟机,基础模板和单个虚拟机是一样的,唯一要做两件事情,一是定义count属性(批量资源个数),二是解决名称这类不能重复的问题,大致格式如下:

resource "huaweicloud_compute_instance_v2" "server_example" {
  .......
  
  count = "2"
  name            = "server_test_${format("%02d",count.index+1)}"
  
  ......}

这里count定义了创建两台虚拟机,name属性里使用了 server_test_ 作为前缀,后面跟上批量虚拟机序号作为名称来命名。

当执行terraform plan时,系统将看到两个instance资源,一个叫 server_test_01, 另一个叫server_test_02.

如果terraform plan/apply过程中出现错误了怎么定位?

  1. 首先设置三个环境变量,linux下命令如下:

export TF_LOG=DEBUGexport TF_LOG_PATH=/var/log/terraform.log  #这里是指定日志文件路径export OS_DEBUG=1
  1. 再次执行出错的terraform命名后,查看日志文档中ERROR类型错误。它能给你提供非常详细的错误线索。

本文出自https://www.codercto.com/a/40766.html