【Terraform】如何从外部传递变量给Terraform
首先
我使用Udemy学习了Terraform,因此这是关于如何在Terraform中从外部传递变量的学习备忘录。
给予变量的方法有三种来源。
-
- 外部から変数値を与える方法は3種類あります
-
- 3種類の方法で同じ変数を並行して指定することも可能です
環境変数 < 変数ファイル < コマンド引数の順で上書きします
同じ方法で変数の定義が重複した場合は原則として後に定義した変数が優先されます
环境变量
使用预先设置的环境变量值。
TF_VAR_【Name】
变量文件
将其指定到预先设定的变量文件名文件中。
terraform.tfvars
命令参数
使用由以下命令参数指定的值。
-var 【NAME】=【NAME】
-var-file【FILE_PATH】
使用环境变量进行覆盖
variable "name" {
type = string
default = "nothing"
}
可以用TF_VAR进行覆盖
环境变量定义,计划执行
$ export TF_VAR_name="hello"
$ terraform plan
# 実行結果
> tags = {
+ "Name" = "hello"
使用变量文件(terraform.tfvars)进行覆盖
变量文件的扩展名是.tfvars。
name = "hoge"
variable "name" {
type = string
default = "nothing"
}
执行计划
$ terraform plan
# 実行結果
> tags = {
+ "Name" = "hoge"
使用命令进行覆盖
variable "name" {
type = string
default = "nothing"
}
执行计划
$ terraform plan -var name="command"
# 実行結果
> tags = {
+ "Name" = "command"
变量覆盖的使用区别
环境变量
在执行日志中没有记录
-
- 鍵情報など(ファイルとして残したくない情報)
-
- 環境依存情報(dev stg prd)など
- 運用管理サーバーで作業するような厳格な場合
变量文件
通常情况下,这种方法是推荐的(将变量放在另一个文件中进行外部引用)。
-
- git管理できる=構成管理として残せる
- ロジックとデータ(変数)を切り離すことで変更箇所が分かりやすくなる
命令参数
在执行日志中留下记录
-
- テストで部分的に変更したい
-
- デバッグで一部変更したい
- など、一時的な利用
本文总结了有关如何在Terraform中从外部提供变量的方法。