Ansible > Register로 저장한 데이터에서 필요한 데이터 추출

안녕하세요. 이번 포스팅은 베스핀글로벌 DevOps 실 윤영기 님이 작성해주신 글 입니다.

이전 블로그 글 예제에서 register 모듈을 사용하여 동적으로 생성된 리소스의 ID를 사용하는 부분에 대해서 조금 더 살펴보고자 작성하였습니다.

보시고 궁금하신 사항이 있으시면 댓글 달아주시기 바랍니다. 🙂

VPC와 Subnet을 함께 생성하는 아래 예제를 다시 보자.

① VPC를 생성한 후에 register 모듈을 이용하여 그 결과를 result_vpc에 저장

② subnet을 생성하기 위해 result_vpc에서 vpc id값을 지정 “{{ result_vpc.vpc.id }}”

다음으로 Internet gateway를 생성한 후 Route Table을 생성하는 아래 예제를 보자.

① Internet gateway를 생성한 후에 register 모듈을 이용하여 그 결과를 result_igw에 저장

② Route Table을 생성하기 위해 result_igw에서 gateway id값을 지정 “{{ result_igw.gateway_id }}”

위 두 개 예제는 생성결과를 변수에 저장하고, 그 변수에서 id값을 꺼내오는 동일한 패턴이지만, id값을 지정하는 방식이 다른 것을 볼 수 있다.

  • vpc id 지정 : result_vpc.vpc.id
  • gatewway id 지정 : result_igw.gateway_id
리턴값에서 특정 값을 지정하는 규칙은 Ansible 홈페이지에서 확인할 수 있다. 

(URL: https://docs.ansible.com/ansible/latest/collections/index_module.html)

위 링크에 접속하여 모듈명 amazon.aws.ec2_vpc_net 의 상세 내용을 살펴보면 페이지 하단에 Return Values 부분을 확인해보자.

  • vpc의 id는 “vpc”하위에 “id”라는 key값을 볼 수 있다. 그렇기 때문에 vpc id를 동적으로 사용하려면{변수명}.{vpc}.{id} 라고 입력하여야 한다.
다음은 모듈명 amazon.aws.ec2_vpc_igw 의 상세 페이지의 Return Values 부분을 살펴보자.

gateway id는 바로 “gateway_id” 라는 key값으로 확인할 수 있다. 그래서 gateway id는 {변수명}.{gateway_id}라고 입력하면 된다. 

감사합니다 🙂

Written by 윤 영기 / Youngki Yoon

Software Engineer

Leave a Comment