반응형
별도의 서브디렉토리에서 테라포밍하기 위해 기존 리소스를 가져오는 방법?
나는 오래전에 콘솔을 이용하여 AWS에서 VPC를 포함한 몇가지 리소스를 만들었고 지금은 Terraform으로 가져오기를 원한다. 나는 이미 내 프로젝트를 위해 다음과 같은 구조물을 만들었다:
└── project_xxx
├── main.tf
├── modules
│ ├── module_foo
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ ├── module_bar
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ ...
├── outputs.tf
├── provider.tf
├── README.md
├── terraform.tfvars
├── variables.tf
└── versions.tf
그러나 내가 그들의 모듈에 있는 리소스를 가져오려고 하면 테라폼이 에러를 표시하고 루트 디렉터리에 리소스를 생성해 달라고 요청한다. 좋은 의견이라도 있나?
예를 들어, modules/ module_foo/main.tf 에서는 다음 코드가 있습니다:
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
instance_tenancy = "default"
tags = {
Name = "main"
}
}
그런 다음: 루트에서 다음 명령을 실행합니다:
terraform init
terraform plan # it shows one resource will be added
terraform import aws_vpc.main vpc-xxx1234
그러면 리소스가 루트에서 생성되어야 한다는 오류가 나타납니다.
모듈로 리소스를 가져오려고 하므로 모듈을 사용하지 않는 경우와 비교하여 가져오기 구문이 약간 다릅니다. 이 경우에는 다음과 같은 것이 필요합니다:
terraform import module.module_foo.aws_vpc.main vpc-xxx1234
자세한 정보는 여기에서 확인할 수 있습니다.
나는 얼마 전에 이것과 씨름했는데, 정확히는 너의 사용 사례가 아니라 비슷한 것이라서 여기서 찾은 것을 버릴 것이다, 아마도 다른 사람에게 도움이 될 것이다. 이러한 경우에 테라포머를 사용하는 것을 추천합니다. 기존 인프라를 잘 이해하는 데 도움이 되고 상태를 생성합니다. 방탄은 아니지만 실제로 도움이 됩니다. 기존 인프라(역 테라포밍)에서 테라포밍 파일을 생성하는 CLI 도구입니다. 인프라스트럭처에서 코드까지
나도 같은 문제에 직면했었다. 이 경우 루트 디렉터리의 main.tf 파일에 모듈을 만들어야 합니다.
module "aws_vpc" {
source = "./modules/module_foo"
다음 명령을 사용하여 리소스를 가져옵니다:
terraform import module.aws_vpc.aws_vpc.main vpc-xxx1234
반응형
'개발하자' 카테고리의 다른 글
Python: 값 유형별 일치/대소문자 수 (1) | 2023.10.28 |
---|---|
(플랑터) TextForm필드 변경라벨 초점 위의 색상 (1) | 2023.10.27 |
파이썬 3.4에서 f-스트링이 작동해야 하나요? (1) | 2023.10.26 |
깃허브 액션으로 플러터웹 사용시 비밀접속하는 방법 (1) | 2023.10.26 |
null일 수 있는 변수에 대한 테라폼 사용자 지정 유효성 검사 (0) | 2023.10.25 |