2017-03-05 6 views
2

저는 terraform을 처음 사용하고 3 ec2 ​​인스턴스를 생성했으며 6 ebs 볼륨을 생성했습니다. 세 개의 인스턴스 각각에 2 ebs 볼륨을 첨부하려면 어떻게합니까?Terraform ebs 볼륨

#Create 6 EBS volumes and attach 2 per instance. 
resource "aws_ebs_volume" "vertica_ebs" { 
     count       = "6" 
     availability_zone    = "${var.availability_zone}" 
     size       = "500" 
     type       = "st1" 

     } 
    } 

#Attach ebs volume 
resource "aws_volume_attachment" "ebs_att" { 
    count = "6" 
volume { 
    device_name = "/dev/sdf" 
    volume_id = "[${element(aws_ebs_volume.vertica_ebs.*.id, count.index)}]" 
} 
volume{ 
    device_name = "/dev/sdg" 
    volume_id = "[${element(aws_ebs_volume.vertica_ebs.*.id, count.index)}]" 
} 
    instance_id = "[${element(aws_instance.vertica1.*.id,count.index)}]" 
} 

오류 :

  • aws_volume_attachment.ebs_att의 # 2 : "DEVICE_NAME": "volume_id": 필요한 필드가
  • 를 설정되지 않은 필수 필드가
  • aws_volume_attachment.ebs_att # 2가 설정되어 있지 않습니다
  • aws_volume_attachment.ebs_att # 2 : : 유효하지 않거나 알 수없는 키 : 볼륨
  • aws_volume_attachment.ebs_att # 4 : "device_name": 필수 필드가 설정되지 않았습니다.
  • aws_volume_attachment.ebs_att의 # 4 : "volume_id"필요한 필드가 설정되지는
  • 는 # 4
  • aws_volume_attachment.ebs_att : 유효하지 않거나 알 수없는 키 : 볼륨
  • aws_volume_attachment.ebs_att # 3 : "DEVICE_NAME은"필수 항목이 아닙니다 "volume_id": 필요한 필드가 설정되어 있지
  • aws_volume_attachment.ebs_att # 3 : 유효하지 않거나 알 수없는 키 : 볼륨
  • aws_volume_attachment.ebs_att # 0 : "volume_id"필수 항목
  • aws_volume_attachment.ebs_att # 3을 설정 설정되지 않음
  • aws_volume_attachment.ebs_att # 0 "DEVICE_NAME ': 필요한 필드가 설정되지는
  • aws_volume_attachment.ebs_att # 0 : 무효 또는 알 수없는 키 : 볼륨
  • aws_volume_attachment.ebs_att # 1 :'DEVICE_NAME"필수 항목은
  • aws_volume_attachment.ebs_att을 설정하지 # 1 : "volume_id"필수 항목
  • aws_volume_attachment.ebs_att # 1이 설정되지 않은 : 잘못되었거나 알 수없는 키 : 볼륨이
  • aws_volume_attachment.ebs_att의 # 5 : "volume_id"필수 필드가
  • aws_volume_attachment을 설정하지 .ebs_att # 5 : "device_name": 필수 필드가 설정되지 않았습니다.
  • aws_volume_attachment.ebs_att # 5 : 잘못되었거나 알 수없는 키 : 볼륨
+0

당신이 요구하는지 명확히 할 수 도움이되기를 바랍니다? '하지만 아래의 코드는 2 개의 ebs 볼륨 만 생성합니다. '이 문장은 완성되지 않은 것 같습니다. 붙여 넣은 코드 스 니펫의 예상 결과는 무엇입니까? 다른 유형을 올바르게 적용하지 않습니까? EC2 인스턴스와 연결하는 추가 코드에 대한 도움을 요청하고 있습니까? –

+0

@AnthonyNeace 위의 코드를 기존 EC2에 추가하면 EC2가 다시 작성됩니다. 각 인스턴스에 2 권을 첨부하는 추가 코드를 알고 싶습니다. – Swat

답변

2

참고 :이 방법은 파괴하고 서버를 다시 것입니다. 이것이 받아 들일 수 없다면 '볼륨 첨부'방법을 사용하십시오 (수락 된 답변 참조).

이 문제에 접근하는 방법 중 하나는 ebs 볼륨을 인스턴스 리소스에 직접 연결하는 것입니다.

각 서버 구성에 'ebs_block_device'요소를 추가 한 다음 terraform apply을 실행하면됩니다.

resource "aws_instance""example_instance"{ 
#INSTANCE CONFIGURATION VALUES 
    ebs_block_device{ 
     device_name = "/dev/sdf" 
     volume_size = 500 
     volume_type = "st1" 
    } 
    ebs_block_device{ 
     device_name = "/dev/sdg" 
     volume_size = 500 
     volume_type = "st1" 
    } 
} 

그런 다음 블록 장치가 서버와 서버에 추가됩니다 것을 볼, terraform plan을 실행 예를 들어, 당신이 바란 각 서버의 자원처럼 보일 것 2 개 EBS 블록 장치를 추가 할 수 있습니다. 이 방법을 사용하면 서버가 훼손되고 재사용됩니다. 허용되는 경우, terraform apply을 실행하여 추가 볼륨이있는 서버를 재구성하십시오.

Check out the documentation around ebs_block_device and aws_instance here.

+0

그건 내가 기대했던 것이 아니다. 귀하의 기존 EC2가 그대로 유지 되었습니까? – user389955

+0

@ user389955 예,이 방법을 사용하면 서버가 다시 작성됩니다. 이를 반영하여 답변을 업데이트했습니다. 서버를 재생성하지 않고 추가 볼륨을 추가하는 가장 좋은 방법은 승인 된 응답에서와 같이 다른 볼륨을 정의하고 볼륨 첨부를 사용하는 것입니다. –

+0

@ Mr.Budris : 감사합니다. 그것을 시도 할 것입니다. – user389955

0

나는이 형식으로 뭔가를 할 것입니다 :

resource "aws_instance" "example" { 
    ami   = "${lookup(var.AMIS, var.AWS_REGION)}" 
    instance_type = "t2.micro" 

} 

resource "aws_ebs_volume" "ebs-volume-1" { 
    availability_zone = "eu-west-1a" 
    size = 500 
    type = "st1" 
    tags { 
     Name = "more volume" 
    } 
} 

resource "aws_ebs_volume" "ebs-volume-2" { 
    availability_zone = "eu-west-1a" 
    size = 500 
    type = "st1" 
    tags { 
     Name = "more volume" 
    } 
} 

resource "aws_volume_attachment" "ebs-volume-1-attachment" { 
    device_name = "/dev/sdf" 
    volume_id = "${aws_ebs_volume.ebs-volume-1.id}" 
    instance_id = "${aws_instance.example.id}" 
} 

resource "aws_volume_attachment" "ebs-volume-2-attachment" { 
    device_name = "/dev/sdg" 
    volume_id = "${aws_ebs_volume.ebs-volume-2.id}" 
    instance_id = "${aws_instance.example.id}" 
} 

그게

+0

ebs 볼륨을 연결하는 데 count를 어떻게 사용합니까? – Swat

관련 문제