Cloudformation과 유사하게 Terraform 템플릿 파일에서 출력을 정의하여 해당 리소스의 속성을 출력 할 수도 있습니다.
예 1 : EIP 및 S3 구성 및 해당 속성 출력
provider "aws" {
region = "us-west-2"
access_key = "AKIA23243L4J2KL243GX"
secret_key = "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"
}
resource "aws_eip" "lb" {
vpc = true
}
output "eip" {
value = aws_eip.lb.public_ip
}
resource "aws_s3_bucket" "mys3" {
bucket = "beanxyz-attribute-demo-001"
}
output "mys3bucket" {
value = aws_s3_bucket.mys3
}
실행 후 결과는 다음과 같으며, 출력 사용시 특정 속성을 지정하지 않으면 모든 속성이 나열되는 것을 알 수 있습니다.
어떤 속성을 인용 할 수 있는지 확실하지 않은 경우 registry.terraform.info의 설명서를 참조하십시오.
예 2 : EC2 및 EIP를 구성하고 EIP를 EC2에 할당
provider "aws" {
region = "us-west-2"
access_key = "AKKSLK22DDKJPC43GX"
secret_key = "fw2fia3asdTTSSShTsd97KM73+M7JJx82Fkz9"
}
resource "aws_instance" "myec2" {
ami = "ami-082b5a644766e0e6f"
instance_type = "t2.micro"
}
resource "aws_eip" "lb" {
vpc = true
}
resource "aws_eip_association" "eip_assoc" {
instance_id = aws_instance.myec2.id
allocation_id = aws_eip.lb.id
}
resource "aws_security_group" "allow_tls" {
name = "kplabs-security-group"
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["${aws_eip.lb.public_ip}/32"]
}
}
위의 예에서 다른 리소스의 속성을 참조 할 때 일부는 id와 같은 직접 호출되고 일부는 ip 주소 블록과 같은 $ () 추가로 호출됩니다. 이전 버전에서는 $ () 형식을 사용해야합니다. 새 버전에서는 대부분의 속성 호출을 직접 사용할 수 있지만 $ () 메서드를 사용해야하는 일부 개별 속성이 있습니다. 혼동을 피하기 위해 모든 사용자에게 $ () 형식을 계속 사용할 수 있습니다.
가동 결과