首页 > 其他分享 >Terraform 语法 变量的使用

Terraform 语法 变量的使用

时间:2022-10-29 16:09:54浏览次数:54  
标签:里面 变量 list var 语法 Terraform ecs tf


Terraform 语法 变量的使用_字符串

变量分为两种类型,一种为输入变量,另外一种为输出变量。

Terraform 语法 变量的使用_环境变量_02

之前在写tf的模板文件的时候用了很多变量,比如在写认证信息的时候,定义的变量存放了阿里云的ak和sk,最后就是region的信息。

变量的使用都是使用variable关键字,后面跟上变量的名称,块里面有变量的类型。

只需要将模块当中经常变化的部分声明为变量,类似于shell。

这些变量也可以跨不同的模块去共享,比如像region信息,当我们有多个模块的时候,既然在同一个region下面,我们就不需要声明很多这种变量了,这样可以实现组合和重用。

可以从终端读取,通过export声明的变量。

tf会去读取文件里面的变量,默认读取的文件terraform.tvars,当项目里面有这个文件,那么tf在执行的时候会以这里面的变量去读取。

Terraform 语法 变量的使用_字符串_03

 在UI当中显示,就是在tf终端当中打印出来的信息,有很多变量我们可以让它不展示出来,这个是个布尔值,如果是true就不展示。可以看到,引用了该变量,在plan下面该变量被打印出来了。

Terraform 语法 变量的使用_字符串_04

Terraform 语法 变量的使用_环境变量_05

变量参数类型还是很多的,之前在其他语言里面声明了变量,可能是字符串,或者是一个数值,或者是一个布尔值,甚至是any包含了下面的任意对象。

list 列表 里面是类型,如果是string,那么就是字符串列表。

set 序列。object是自定义的对象。

Terraform 语法 变量的使用_字符串_06

比如要配置dns的数据,dns域名里面可能定义了多个环境,每个环境它的域名可能都不太一样。

那么我们根据key去定义环境,value就是每个环境定义的域名。

上面图片注意,一个是声明变量,另外一个是定义变量,那么tf才能读取进来。

图片左边是声明变量,右边是定义变量。

Terraform 语法 变量的使用_terraform_07

list类型是一个列表,可以说是个数组,通过list可以定义具有相同意义的值。

list里面调用值就是通过索引去调用。

output "my_env" {
value = var.env_list[0]
}

Terraform 语法 变量的使用_环境变量_08

object就是一个对象了,这个是自定义的对象。你可以自定义一些属性,它的类型和它的值。

那么创建ecs的时候就可以传递这个变量了,在调用的时候就和map是一样的。

image_id                   = var.ecs_info.esc_image
instance_name = var.ecs_info.ecs_name
vswitch_id = alicloud_vswitch.vsw.id
+ image_id                           = "centos_7_04_64_20G_alibase_201701015.vhd"
+ instance_charge_type = "PostPaid"
+ instance_name = "my_ecs"

Terraform 语法 变量的使用_环境变量_09

上面就是变量的优先级了,可以在环境变量里面设置变量,还可以在tfvars里面设置变量。如果是使用json写的,那么可以创建tfvars.json。

然后下面是可以覆盖的变量。

最后可以在命令行里面传递变量。

Terraform 语法 变量的使用_环境变量_10

 在执行tf部署的时候,传递一个变量是region,可以通过-var,如果是传递很多变量,那么就写多个-var,变量类型有很多,比如list类型,注意使用单引号引用起来。

可能将变量写到文件里面,但是它的文件名称不叫terraform.tfvars,它可能叫dev.tfvars,也是我自己定义的文件。这个时候就需要通过-var-file参数进行指定。

最后就是环境变量,所有变量都是以TF_VAR开头,这个时候tf在读取环境变量的时候认为它是tf的变量,加载这里面的值。

Terraform 语法 变量的使用_环境变量_11

 

 

 

 

 

标签:里面,变量,list,var,语法,Terraform,ecs,tf
From: https://blog.51cto.com/u_14035463/5806198

相关文章

  • Terraform 语法 resource(1)
    resource是我们的资源,一般在terraform里面定义的都是资源,是个非常重要的角色。关键字resource+资源类型(比如dns,ecs,vpc,交换机)+资源的名称。模块下资源的名称要保证唯一,不要冲......
  • Terraform 语法 provider插件
     语法是terraform最重要的一点,有两个部分来讲解,第一部分是基础,第二部分是更加高级的扩展。后面各种实践其实就是对terraform语法编写。第一部分是provider插件,provider提供......
  • Terraform DataSource 数据源
    有些时候在创建资源的时候,会用到一些数据,比如在创建ecs的时候,我可能会用到一些镜像。这个我们可以去浏览云供应商提供的文档去查询,其实我们也可以通过provider来拿到。provi......
  • Terraform 基础 申请阿里云资源
    之前,资源都定义好了,现在就是去申请资源了。申请这些资源就需要使用terraform的命令行了,开始初始化后端,后端是有存储文件的,默认情况下是在本地存储的,然后会多一些文件。 (下......
  • 【TypeScript】语法精讲
    TypeScript的编译环境#安装命令npminstalltypescript-g#查看版本tsc--versionTypeScript的运行环境#安装ts-nodenpminstallts-node-g#另外ts-node需要依赖tslib......
  • typeScript基础语法
    1.变量定义变量名:变量的类型(首字母小写)letdan:string='蛋'letnumArr:number[]=[4,2,0];2、核心定义任何东西的时候要注明类型调用任何东西的时候要检查类型3......
  • 上手python之变量和字符串
    什么是变量变量:在程序运行时,能储存计算结果或能表示值的抽象概念。简单的说,变量就是在程序运行时,记录数据用的变量的定义格式: 变量就像盒子可以存放内容 变量的特征  ......
  • jsp 的语法(重点掌握)
    jsp文件头部声明介绍(page指令介绍)<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%> 这是jsp文件的头声明。表示这是jsp页......
  • 网络协议包括三个要素分别为语法、语义、同步等
    网络协议包括三个要素分别为语法、语义、同步等1、语法是用户数据与控制信息的结构与格式,以及数据出现的顺序;2、语义是解释控制信息每个部分的意义;需要发出何种控制信息,......
  • 不借助第三个变量,交换两个数。(使用异或^)
    packageclass02;importjava.util.Arrays;/***不借助第三个变量,交换两个数。(使用异或^)*异或(^):相同为0,不同为1。*记为:无进位相加。*/publicclassCod......