홈>
모든 db 속성이 동일하게 남아있는 여러 RDS 인스턴스를 생성해야한다는이 요구 사항에 부딪 쳤습니다. 태그 만 달라야합니다. 내 배포에 Terraform을 사용하고 있으며 이러한 상황에서 실제로 도움이됩니다. 그러나 count를 사용하여 RDS 인스턴스를 생성 할 수 있지만 태그는 달라야합니다.
코드 :
resource "aws_db_instance" "rds-mysql" {
count = "${var.RDS_INSTANCE["deploy"] == "true" ? 1 : 0}"
allocated_storage = "${var.RDS_INSTANCE[format("allocated_storage.%s",var.ENVIRONMENT)]}"
auto_minor_version_upgrade = true
backup_retention_period = "${var.RDS_INSTANCE[format("backup_retention_period.%s",var.ENVIRONMENT)]}"
db_subnet_group_name = "${aws_db_subnet_group.rds-mysql.id}"
engine = "${var.RDS_INSTANCE["engine"]}"
final_snapshot_identifier = "${format("%s-%s-%s-rds-mysql-final-snapshot",var.PRODUCT,var.ENVIRONMENT,var.REGION_SHORT_NAME)}"
engine_version = "${var.RDS_INSTANCE["engine_version"]}"
instance_class = "${var.RDS_INSTANCE[format("instance_class.%s",var.ENVIRONMENT)]}"
multi_az = "${var.RDS_INSTANCE[format("multi_az.%s",var.ENVIRONMENT)]}"
parameter_group_name = "${aws_db_parameter_group.rds-mysql.id}"
password = "${var.RDS_MASTER_USER_PASSWORD}"
skip_final_snapshot = "${var.RDS_INSTANCE[format("skip_final_snapshot.%s",var.ENVIRONMENT)]}"
storage_encrypted = "${var.RDS_INSTANCE[format("storage_encrypted.%s",var.ENVIRONMENT)]}"
storage_type = "gp2"
username = "${var.RDS_INSTANCE["username"]}"
vpc_security_group_ids = ["${var.SG_RDS_MYSQL_ID}"]
tags {
Name = "${format("%s-%s-%s-rds-mysql",var.PRODUCT,var.ENVIRONMENT,var.REGION_SHORT_NAME)}"
Project = "${format("%s-share",var.PRODUCT)}"
Environment = "${var.ENVIRONMENT}"
}
#Resource lifecycle
lifecycle {
ignore_changes = ["allocated_storage","instance_class"]
}
}
아마도 2 개의 RDS를 배포하고 다음은 태그의 모양입니다 :
#RDS 1
tags {
Name = "${format("%s-%s-%s-rds-mysql",var.PRODUCT1,var.ENVIRONMENT,var.REGION_SHORT_NAME)}"
Project = "${format("%s-share",var.PRODUCT1)}"
Environment = "${var.ENVIRONMENT}"
}
# RDS2
tags {
Name = "${format("%s-%s-%s-rds-mysql",var.PRODUCT2,var.ENVIRONMENT,var.REGION_SHORT_NAME)}"
Project = "${format("%s-share",var.PRODUCT2)}"
Environment = "${var.ENVIRONMENT}"
}
이를 달성 할 수있는 방법이 있는지 확인하십시오.
- 답변 # 1
관련 자료
- amazon web services - 여러 인스턴스를 Terraform하지만 별도 실행
- ajax - JavaScript를 사용하여 여러 선택 상자를 동적으로로드
- 여러 독립적 인 if 절에 대해 레일의 Ruby에서 guard 절 사용
- javascript - Nodejs에서 axios를 사용하는 다중 get 요청
- linux - 단일 명령에 여러 별칭 사용
- r - "across"를 사용하여 dplyr에서 여러 열 변경
- android - rxJava를 사용하여 AWS 서버에 여러 이미지 업로드
- python - 여러 if 문을 사용하여 함수의 복잡성을 줄이는 방법
- amazon web services - AWS CLI를 사용하여 여러 AWS 스냅 샷을 대량 삭제하는 방법은 무엇입니까?
- oop - C ++에서 소멸자 호출없이 여러 클래스 인스턴스 (객체) 유지
- c - gcc 컴파일러 최적화 - 문자 여러 번 사용
- android - 컨테이너를 사용하여 카테고리 목록 생성
- html - R을 사용하여 웹 페이지에서 여러 테이블을 검색하는 방법
- bash 스크립트를 사용하여 terraform 변수 파일 편집
- python - django rest 프레임 워크에서 여러 유형의 사용자를 만들 때 예기치 않은 키워드 인수 'last_login'이 있습니다
- javascript - 카운터를 사용하여 여러 양식 제출을 방지 하시겠습니까?
- regexp replace - Oracle regexp_replace를 사용하여 여러 문자열 또는 단어 캡처
- python - matplotlib를 사용하여 데이터 프레임에서 여러 변수를 플로팅하고 싶지만 최종 플롯이 너무 이상해 보입니다
- javascript - URLSearchParams를 사용하여 동일한 키로 여러 키 값 쌍 중 하나만 제거하는 방법은 무엇입니까?
- Python Pandas를 사용한 여러 그룹화 및 groupby 집계
관련 질문
- terraform init를 여러 번 실행하는 것이 안전합니까?
- Terraform 및 S3 수명 주기: 특정 개체를 만료하는 방법은 무엇입니까?
- SHA를 사용하여 Terraform을 사용하여 AWS EventBridge 작업을 예약하려면 어떻게 해야 합니까?
- 조건문을 사용하여 하나의 모듈을 실행하는 방법은 무엇입니까?
- Fargate 작업 정의에 대해 운영 체제 제품군을 지정하는 방법은 무엇입니까?
- 특정 지역의 데이터 소스를 사용하여 어베일 영역 데이터를 가져올 수 없습니다.
- Terraform 작업 공간이 스테이징 환경일 때만 리소스를 동적으로 생성하는 방법
- Terraform 목록에서 프로비저닝된 특정 리소스를 사용하는 방법
- EC2 생성 중 사용자 데이터에 대한 Terraform 인스턴스 속성 참조
- Terraform을 사용한 Cloudwatch 경보의 차원에 대한 조건부 속성
위의 코드는 하나의 RDS 만 만들거나 아무것도 만들지 않습니다. RDS를 2 개 이상 만들 수 없습니다.
그리고 스펙 요구 사항이 동일하더라도 다른 목적으로 "카운트"를 갖는 다중 RDS를 만드는 것은 좋지 않다고 생각합니다. 예를 들어, 4 개의 RDS가 있으며 해당 RDS 중 하나를 확장하려는 경우. 관리하기가 어렵습니다. 코드를 복사하여 여러 번 붙여 넣는 것이 좋습니다. 또는 모듈을 만들 수도 있습니다.
어쨌든 아래와 같이 각 RDS에 대해 서로 다른 태그를 만들 수 있습니다. 목록 변수 (var.PRODUCT)를 만들고 var.PRODUCT1 또는 var.PRODUCT2 대신 "element"를 사용하십시오
<시간>새 목록 변수를 작성하기 어려운 경우 로컬 변수를 작성할 수 있습니다.