Terraform环境变量

2024-05-06 03:52
文章标签 环境变量 terraform

本文主要是介绍Terraform环境变量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Terraform使用一系列的环境变量来定制化各方面的行为,如果只是想简单使用Terraform,并不需要设置这些环境变量;但它们可以在一些不常见的场景下改变Terraform的默认行为,例如出于调试目的修改输出日志的级别。

TF_LOG

该环境变量可以设定Terraform内部日志的输出级别,例如:

$ export TF_LOG=TRACE

Terraform日志级别有TRACEDEBUGINFOWARNERROR,TRACE包含的信息最多也最冗长,如果TF_LOG被设定为这五级以外的值时Terraform会默认使用TRACE

TF_LOG_PATH

该环境变量可以设定日志文件保存的位置。
注意,如果TF_LOG_PATH被设置了,那么TF_LOG也必须被设置。举例来说,想要始终把日志输出到当前工作目录,可以这样设置:

$ export TF_LOG_PATH=./terraform.log

TF_INPUT

该环境变量设置为”false”或”0”时,等同于运行Terraform相关命令行命令时添加了参数-input=false。如果想在自动化环境下避免Terraform通过命令行的交互式提示要求给定输入变量的值而是直接报错时(无default值的输入变量,无法通过任何途径获得值)可以设置该环境变量:

$ export TF_INPUT=0

TF_VAR_name

可以通过设置名为TF_VAR_name的环境变量来为名为”name”的输入变量赋值:

$ export TF_VAR_region=us-west-1
$ export TF_VAR_ami=ami-049d8641
$ export TF_VAR_alist='[1,2,3]'
$ export TF_VAR_amap='{ foo = "bar", baz = "qux" }'

TF_CLI_ARGS以及TF_CLI_ARGS_name

TF_CLI_ARGS的值指定了附加给命令行的额外参数,这使得在自动化CI环境下可以轻松定制Terraform的默认行为。
该参数的值会被直接插入在子命令后(如plan)以及通过命令行指定的参数之前,这种做法确保了环境变量参数优先于通过命令行传递的参数。
例如,执行这样的命令:TF_CLI_ARGS="-input=false" terraform apply -force ,它等价于手工执行terraform apply -input=false -force
TF_CLI_ARGS变量影响所有的Terraform命令,如果只想影响某个特定的子命令,可以使用TF_CLI_ARGS_name变量。例如:TF_CLI_ARGS_plan="-refresh=false"就只会针对plan子命令起作用。

该环境变量的值会与通过命令行传入的参数一样被解析,可以在值里使用单引号和双引号来定义字符串,多个参数之间以空格分隔。

TF_DATA_DIR

TF_DATA_DIR可以修改Terraform保存在每个工作目录下的数据的位置。
一般来说,Terraform会把这些数据写入当前工作目录下的.terraform文件夹内,但这一位置可以通过设置TF_DATA_DIR来修改。
大部分情况下不应该设置该变量,但有时可能不得不这样做,比如默认路径下无权写入数据时。

该数据目录被用来保存下一次执行任意命令时需要读取的数据,所以必须被妥善保存,并确保所有的Terraform命令都可以一致地读写它,否则Terraform会找不到Provider插件、模块代码以及其他文件。

TF_IN_AUTOMATION

如果该变量被设置为非空值,Terraform会意识到自己运行在一个自动化环境下,从而调整自己的输出以避免给出关于该执行什么子命令的建议,这可以使得输出更加一致且减少非必要的信息量。

TF_REGISTRY_DISCOVERY_RETRY

该变量定义了尝试从registry拉取插件或模块代码遇到错误时的重试次数。

TF_REGISTRY_CLIENT_TIMEOUT

该变量定义了发送到registry连接请求的超时时间,默认值为10秒。
可以这样设置超时:

$ export TF_REGISTRY_CLIENT_TIMEOUT=15

TF_CLI_CONFIG_FILE

该变量设定了Terraform命令行配置文件的位置:

$ export TF_CLI_CONFIG_FILE="$HOME/.terraformrc-custom"

这篇关于Terraform环境变量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963376

相关文章

配置Java(JDK)环境变量

一、配置JDK环境变量 将JDK-22压缩包加压缩到指定目录下面,本机路径是:C:\Program Files\Java(可以加压缩到自己的指定路径,记住这个路径,配置环境变量时候要使用)。 鼠标右键“此电脑”,点击“属性”,点击“高级系统设置”,然后进入“环境变量”。 点击“新建”,然后变量名填“JAVA_HOME”,变量值填自己的JDK的下载路径,我这里是“C:\\P

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

[Linux]:环境变量与进程地址空间

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 环境变量 1.1 概念 **环境变量(environment variables)**一般是指在操作系统中用来指定操作系统运行环境的一些参数,具有全局属性,可以被子继承继承下去。 如:我们在编写C/C++代码的时,在链接的时候,我们并不知

【20240907问题记录(未解决)】Conda环境问题:SSH与本地环境变量不一致

Conda 允许用户在同一系统上创建多个独立的Python环境。然而,最近遇到了一个奇怪的问题:通过SSH连接到远程Ubuntu机器时,Conda环境变量的行为与本地机器不一致。以下是具体遇到的问题: 1. 问题描述 在本地Ubuntu机器上,我的conda的python版本是3.6,而pip版本可以通过命令 pip --version 查看,显示为: pip 21.3.1 from /ho

配置JAVA环境的时候,环境变量中administrator的用户变量和系统变量的区别?

迁移项目到新的服务器上: 需要Java运行环境时,经常要配置环境变量,如图所示 这里有administrator的用户变量(U),和系统变量(S), 那么,它们之间有什么区别呢? 简单的说,一个是当前用户使用,你用其它用户登陆,这个环境变量就不起作用了。 系统变量,是对所有用户都可使用的。 简单的说: 系统变量:不管以哪个用户名登陆到计算机都能使

postman基础教程-02环境变量

编写的API往往需要在多个环境下执行,而Postman 提供了两种类型的变量:环境变量和全局变量,从而很好的解决了这个问题。 环境变量有效范围仅仅在于你所选取的环境,全局变量对所有的环境都试用 api可能需要在拨通的环境中运行,所以api请求的服务器地址不能写死,希望是可以配置的,创建环境变量有多种方式。 环境变量 1.手工预先创建环境变量 点击小眼睛按钮即可创建环境变量,第一个是环境变量

java复习第三课,java环境变量的配置以及测试

JDK、JRE、JVM的区别 JDK:Java Development Kit,Java的开发工具包 JRE:Java Runtime Environment,Java运行时环境 JVM:Java Virtual Machine,Java虚拟机 他们三个是包含的关系,JDK包含了JRE,JRE里包含了JVM(看下图,了解即可) java虚拟机在windows系统,Liunx系统,

【python学习】深度解析 Python 的 .env配置与最佳实践:温格高的环境变量配置之道

1. 文章简介 在开发和部署 Python 项目时,环境变量配置对于管理敏感信息如数据库连接字符串、API 密钥至关重要。本文将以温格高(2023年环法冠军)的项目为例,详细介绍如何通过 .env 文件简化环境配置,并分享多环境管理、Docker 集成等热门功能。我们还将覆盖一些小技巧和常见错误,帮助你避免开发中的踩坑。 2. 使用 .env 文件的好处 温格高团队正在开发一个记录自行车赛事

J2SE - JDK环境变量的说明和设置

一、说明     JAVA_HOME:指向Jdk的安装路径,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的Jdk     CLASSPATH:指定类的搜索路径,是javac编译器的一个环境变量,与import、package关键字有关,JVM就是通过CLASSPATH来寻找类的.class文件     PATH:指定命令的搜索路径,在命

vite请求代理结合环境变量配置

一、根目录增加env.development文件 VITE_BASE_URL='/api' 二、填写env.d.ts文件, 目的:方便在import.meta.env.这里提示 interface ImportMetaEnv{VITE_BASE_URL:string,} 三、axios文件 export const http = axios.create({baseURL:impo