Terraform的输入变量和输出变量是两种重要的机制,它们可以帮助用户在Terraform配置文件中定义和管理变量,并在不同的Terraform配置文件之间共享数据。
输入变量(Input Variables)是在Terraform配置文件中定义的、可以由用户提供的变量。它们可以用于配置资源,例如,定义虚拟机的数量、存储桶的名称等。用户可以通过terraform.tfvars文件或命令行参数来设置输入变量的值。
下面是一个示例:
variable "instance_count" {
type = number
default = 1
}
resource "aws_instance" "example" {
count = var.instance_count
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
在上述例子中,我们定义了一个名为instance_count的输入变量,它的类型为number,默认值为1。我们使用var.instance_count来引用该变量,并使用count属性来根据变量的值动态创建多个资源。
输出变量(Output Variables)是由Terraform配置文件生成的、供其他Terraform配置文件引用的变量。输出变量可以用于将数据从一个Terraform配置文件传递到另一个Terraform配置文件,例如,将虚拟机的IP地址传递给另一个配置文件。
下面是一个示例:
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
provisioner "local-exec" {
command = "echo ${aws_instance.example.private_ip} > private_ip.txt"
}
}
output "private_ip" {
value = aws_instance.example.private_ip
}
在上述例子中,我们定义了一个名为private_ip的输出变量,它的值为虚拟机的私有IP地址。我们使用aws_instance.example.private_ip来引用该变量,并在provisioner块中将其写入到文件中。在另一个Terraform配置文件中,我们可以使用${terraform_remote_state.<name>.outputs.<output_name>}来引用该输出变量。