2017-12-06 1 views
1

기존 AWS VPC에서 Terraform을 사용하여 몇 가지 새로운 EC2, RDS 등을 만들어야합니다. 기존 서브넷, 보안 그룹, iam 등은 Terraform에서 생성하지 않습니다. 수동으로 생성됩니다.Terraform을 사용하여 기존 VPC에서 EC를 시작하는 방법

올바른 방법은 terraform 가져 오기를 사용하는 것이라고 들었습니다 (맞습니까?). terraform 가져 오기 작동 방법을 테스트하기 위해 기존 VPC 대신 기존 EC2를 가져 오는 방법을 처음 테스트했습니다. 기존 VPC에서 실수로 아무 것도 변경하지 않으려 고하기 때문입니다.

실행하기 전에

내가 같은 내 ec2.tf 파일에 매우 상세한 EC2 리소스를 만들 필요가 마치
terraform import aws_instance.example i-XXXXXXXXXX 

: 난 그냥 쓰는 경우

resource "aws_instance" "example" { 
    iam_instance_profile = XXXXXXXXXX 
    instance_type = XXXXXXX 
    ami = XXXXXXX 
    tags { 
    Name = XXXXX 
    Department = XXXX 
    .... 
    } 
} 

:

resource "aws_instance" "example" { 
} 

ami 및 인스턴스 유형을 놓친 것으로 나타났습니다.

내가 작성하는 경우 :

resource "aws_instance" "example" { 
    instance_type = XXXXXXX 
    ami = XXXXXXX 
} 

는 "적용 terraform" 는 아무것도 기존 EC2의 태그를 변경 아무것도 스피 프로필을 변경합니다 실행.

기존의 vpc, 서브넷, 보안 그룹을 가져 오는 방법을 아직 시도하지 않았습니다. 시도 할까봐 걱정됩니다. 기존의 vpc, 서브넷, 보안 그룹 등 많은 정보를 입력해야합니다. 시스템이 복잡합니다.

내 테라 폼 코드에 많은 세부 사항을 표시해야 할 것으로 예상됩니까? 방법은 없으므로 vpc의 ID와 같은 기존 항목의 ID 만 나타내면 내 새 항목은 기존 ID를 기반으로 만들어 집니까? sth. like :

data "aws_subnet" "public" { 
    id = XXXXXXX 
} 

resource "aws_instance" "example" { 
    instance_type = "t2.micro" 
    ami = "${var.master_ami}" 
    ...... 
    subnet_id = "${aws_subnet.public.id}" 
} 

답변

2

가져 오기 중에는 본문을 비워 둘 수 있지만 가져온 후에는 다시 들어가서 특정 세부 정보를 채워야합니다. 가져온 리소스를 terraform show 명령으로 살펴보고 모든 리소스 세부 정보를 입력 할 수 있으므로 terraform 계획을 실행하려고하면 변경 사항이 필요하지 않습니다.

질문에 대답하려면 예. 기존 리소스를 가져올 필요없이 사용할 수 있습니다. 새 리소스에 필요한 기존 리소스 ID를 보유하는 변수 파일을 만든 다음 필요한 리소스 파일을 참조 할 수 있습니다. 자원을 만들려면 main.tf에서 다음

variable "ami_id" { 
    description = "AMI ID" 
    default = "ami-xxxxxxxx" 
} 

variable "subnet_prv1" { 
    description = "Private Subnet 1" 
    default = "subnet-xxxxxx" 
} 

:

그래서 당신은 같은과 함께 .vars 파일을 가질 수 그것에 대해 갈

resource "aws_instance" "example" { 
    instance_type = "t2.micro" 
    ami = "${var.ami_id}" 
    ...... 
    subnet_id = "${var.subnet_prv1}" 
} 

그냥 하나의 방법입니다. 다른 사람들이 있습니다. 위로 읽을 수 있습니다. the terraform docs for variables

+0

감사합니다. Rick. 그것은 작동합니다. 요약하면, terraform을 사용하여 기존 vpc (수동으로 생성 된)를 변경해야하는 경우 먼저 가져와야하지만 기존 vpc에서 새 구성 요소를 만들려면 게시 한 두 번째 솔루션을 사용합니다. 고마워. – user389955

관련 문제