首页 > 其他分享 >Terraform - 初解Terraform - 变量

Terraform - 初解Terraform - 变量

时间:2024-08-22 23:38:14浏览次数:8  
标签:变量 terraform tfvars var Terraform 初解 VAR

Variable变量

Terraform 运行时会读取工作目录中所有的 *.tf, *.tfvars文件,所有变量不应在单个文件中去,应分类在不同的文件中。

  • 通过variables.tf文件集中管理变量
  • 通过variable关键字声明变量的名称、类型、默认值等
  • 在同一个模块的所有变量中必须是唯一的
  • 可以从环境变量或者文本文件中读取
  • 在系统环境变量中export敏感变量的值(以TF_VAR_的名称开头)
  • 在terraform.tfvars文件中定义变量的值,Terraform默认读取这个文件

声明变量的可选参数

  • default 变量的默认值
  • type 变量的类型
  • description 变量的描述信息
  • validation 定义变量验证规则
  • sensitive 限制变量在终端中显示,如果为true就隐藏显示
  • nullable 变量是否可为空

变量的常见类型

  • any
  • string、number、bool
  • list()、set()、map()
  • object((ATTR_NAME = ATTR_TYPE, ...))、tuple([,...])

例如:使用map类型变量定义DNS域名,在variables.tf中声明变量map类型,在terraform.tfvars中定义变量的值,在resource中通过map数据类型的索引来调用对应值

变量的使用方式

在变量声明后,可以使用 var.VAR_NAME 的方式引用;VAR_NAME是在variables.tf定义的名称。

变量的优先级如下:
1.环境变量,Terraform会读取TF_VAR_name格式的环境变量
2.terraform.tfvars | terraform.tfvars.json
3.*.auto.tfvars | *.auto.tfvars.json
4.命令行下, -var选项传递变量, -var-file选项加载一个变量文件

Terraform会自动加载当前目录下扩展名为.tfvars和.auto.tfvars的文件来填充定义的变量。
如果以其他格式存放,可以使用-var-file选项来手动指定需要加载的HCL格式或JSON格式的变量值文件。

terraform apply -var="region=cn-beijing"
terraform apply -var='env_list=["dev", "test"]' -var="region=cn-beijing"

terraform apply -var-file="dev.tfvars"

export TF_VAR_region='cn-beijing'
export TF_VAR_env_list='["dev", "test"]"

示例:Terraform会读取TF_VAR_access_key的环境变量,并用于填充access_key变量。

本地变量

  • 局部值有助于避免在配置中多次重复相同的值或表达式
  • 多用于调试和测试
  • 通过locals关键字进行定义,通过local.VAR_NAME调用

交互输入

如果没有对变量赋值,在执行命令时,会出现交互界面,让用户手动输入变量值,来给变量赋值。

Output输出

  • 可以打印已定义的变量,也可以公开信息以供其他 Terraform 配置使用
  • 输出值类似于编程语言中的返回值。

Output可选参数

  • description 变量的描述信息;
  • sensitive 限制变量在UI中显示;
  • depends_on 依赖关系

标签:变量,terraform,tfvars,var,Terraform,初解,VAR
From: https://www.cnblogs.com/anliven/p/18374992

相关文章

  • Terraform - 初解Terraform - 语法
    Terraform配置文件配置文件支持两种格式HCL(HashiCorpConfigurationLanguage)、JSONHCL格式后缀名以.tf结尾,JSON格式后缀名以.tf.json结尾HCL格式更加人性化,支持“//”注释,并且是大多数Terraform文件通常推荐的格式JSON格式适用于机器创建,修改和更新,也可以由Terraform操作员......
  • Terraform - 初解Terraform - 厂商
    云厂商资源1.配置云厂商访问控制:人员访问权限、API访问权限、秘钥等2.配置云厂商对应的provider3.定义云厂商资源4.申请云厂商资源创建配置文件对所有资源的代码描述都需要定义配置文件中,用于Terraform加载和解析,建议分类创建结构化的配置文件,例如version.tf:required_pro......
  • Terraform - 初解Terraform - 命令
    调试terraformfmt格式化当前目录的tf文件内容格式,并列出已进行格式化的文件列表-diff选项,显示格式更改的差异-recursive选项,在所有子目录递归执行terraformvalidate验证配置的语法有效性,检查和定位错误出现的详细位置和原因-json选项,以json格式显示结果默认在当前目录......
  • Terraform - 初解Terraform - 安装
    开发环境配置Note:安装环境为windows系统64位笔记本电脑1.安装适用于Windows的Terraform:https://developer.hashicorp.com/terraform/install2.下载Terraform:https://releases.hashicorp.com/terraform/1.9.4/terraform_1.9.4_windows_amd64.zip3.从下载中,将可执行文件......
  • Terraform - 初解Terraform - 简介
    前言云计算主要提供计算服务,例如服务器、存储、数据库、网络等等;对于云服务,通常只需使用多少支付多少,从而帮助降低运营成本,使基础设施更有效地运行,并能根据业务需求的变化调整对服务的使用。公有云:多租户面向个人或企业由第三方云服务商托管和运营。私有云:专供一个企业......
  • Terraform中的for_each和count
    通过Terraform创建云主机时,在某些业务场景下,一个机器需要挂载多个云盘,一般云厂商都是单独创建云主机和云硬盘然后通过attachment的资源去挂载,因此我们的模板大致如下:resource"tencentcloud_instance""basic"{instance_name=var.instance_namepassword="xxx"}......
  • 从零开始学习C++之变量
    变量没啥好讲的,讲下类型和格式得了。变量类型:int:整数类型;范围大约为\(-2147000000\sim2147000000\)。longlong:长整型;范围大约是\(-2^{63}\sim2^{63}-1\)。unsignedint/longlong:不包括负数,整数范围扩大一倍。double:小数类型(比float进度高),大约能包含\(1......
  • C语言数据类型和变量(下)
    目录1.算数操作符:+、-、*、/、%1.1+和-1.2*5.3/5.4%2.赋值操作符:=和复合赋值2.1连续赋值6.2复合赋值符3.单目操作符:++、--、+、-3.1++和--3.1.1前置++3.1.2后置++3.1.3前置--3.1.4后置-- 3.2+和- 4.强制类型转换 5.scanf和prin......
  • go通过使用不同的环境变量可以打包不同平台运行的程序
    在项目下进入控制台,设置不同的参数然后gobuild就可以编译为目标平台程序了/**#go通过使用不同的环境变量可以打包不同平台运行的程序#mac下的环境变量goenv-wCGO_ENABLED=1GOOS=darwinGOARCH=amd64#linux的环境变量goenv-wCGO_ENABLED=0GOOS=linuxGOARCH=amd......
  • springboot maven项目多环境profile配置,打包后配置文件properties或yml中的${}或@@变
    maven一些配置如下:项目中配置了多环境<profiles><!--数据库类型--><profile><!--mysql版默认--><id>mysql</id><activation><activeByDefault>true</activ......