Terraform의remote복습해 주세요.
* 소스 코드가 여기에 업로드되었으니 자유롭게 사용하십시오.terraform_remote_state_sample
terraform_remote_state is 뭐라고?
Terraform 공식 문서(The terraform_remote_state Data Source:
The terraform_remote_state data source retrieves the root module output values from some other Terraform configuration, using the latest state snapshot from the remote backend.
따라서 다른 자원에서 어떤 자원의output을 참조할 수 있다. (원격 저장의 최신 물건이기도 하다.)
Terraform의 자원은 A와 B로 분리되어 관리되지만 어떤 이유로'B에서 A까지의 xx를 참조하고 싶다'는 상황에 도움이 된다.
절차로서 대체로 다음과 같은 느낌이다.
사용
terraform_remote_state
output에서 얻은 값 참조물줄기
관리되는 IAM Role을 독립적으로 관리하는 디렉토리
iam
와 iam2
, iam
실행 후 실행iam2
, 실행 결과와 관련된 정보를 iam2
측면에서 사용하려는 경우를 가정해 봅니다.1. S3에서 상태 관리를 위한 물통 준비
다음 리소스를 적용하여 S3 섹션 만들기
resource "aws_s3_bucket" "sample_tf" {
bucket = "sample-tf"
versioning {
enabled = true
}
}
2. Terraform과 S3 통 협력
iam
측에서 다음과 같은 느낌의 정의를 iam
로 제작backend.tf
하면.제작된 S3 통은 연합할 수 있다.S3 물통을 미리 준비해야 하기 때문에 주의가 필요하다.
terraform {
backend "s3" {
bucket = "sample-tf"
key = "terraform.tfstate1"
region = "ap-northeast-1"
}
}
3. output 자원 정의
terraform init
면은 다음과 같이 정의됩니다.// main.tf
data "aws_iam_policy_document" "sample_tf" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["ec2.amazonaws.com"]
}
}
}
resource "aws_iam_role" "sample_tf" {
name = "sample_tf"
assume_role_policy = data.aws_iam_policy_document.sample_tf.json
description = "for terraform example"
force_detach_policies = false
tags = {}
}
output "iam_role_name" {
value = aws_iam_role.sample_tf.name
}
이 상태에서 iam
하면 다음과 같은 느낌으로 만들어집니다terraform plan
Plan: 1 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ iam_role_arn = (known after apply)
적용할 때 S3 구간에backend가 지정한 자원을 만듭니다.4. output을 사용하여 output을 하는 값을 참조한다
terraform_remote_state
면은 다음과 같이 정의됩니다.terraform_remote_state를 사용하여
iam2
의name 정의aws_iam_role.sample_tf2
측에 정의된name를 참조합니다.data "aws_iam_policy_document" "sample_tf2" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["ec2.amazonaws.com"]
}
}
}
resource "aws_iam_role" "sample_tf2" {
// data.terraform_remote_state.${terraform_remote_stateで定義したリソース名}.outputs.${main/iam側のoutputで指定したリソース名}
name = "${data.terraform_remote_state.sample_tf.outputs.iam_role_name}-2"
assume_role_policy = data.aws_iam_policy_document.sample_tf2.json
description = "for terraform example"
force_detach_policies = false
tags = {}
}
aply에 적용하면 IAM Roleiam
이 만들어진다.참고 자료
Reference
이 문제에 관하여(Terraform의remote복습해 주세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nameless_gyoza/articles/terraform-remote-state텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)