본문 바로가기

DevOps/Automation

Automation for Networker[4] - Ansible : Part 2

 


Ansible 2번째 포스팅입니다.

Automation for Networker의 4번째 포스팅이기도 합니다.

실습하면서 포스팅 준비를 해 놓은 건, 한 달쯤 전인 듯 싶은데.. 이제서야 올리네요.

다른 내용도 조금씩 조금씩 보다보니,

포스팅이 다시 더뎌졌지만.. 그래도 조금씩 더 채울 수 있도록~ ^^

좋은 정보를 나눌 수 있도록 노력해보겠습니다.


  Ansible Example 4


Ansible 4번째 예제는 하나의 Playbook 파일을 나눠서 구성해 봅니다.

기본적으로 실행하게 되는 Playbook은 site.yml로 가장 최소화하게 구성을 하고,

Task와 Variable 등은 각각의 폴더에 구조적으로 나누게 됩니다.

 

이번 예제에서 살펴볼 구조는 아래와 같습니다.

 

 

 기본 폴더에 site.yml 파일을 놓고,

 하위로 roles 폴더에서 관리를 하게 되는 데, roles 안에서는 roles에 따라서 필요한 폴더를 생성하게 됩니다.

 여기서는 zigi_roles1이라는 role로 관리를 합니다.

 하나의 role안에는 task, template, var 등이 존재 할 수 있습니다.

 

 


site.yml 코드 보기

 

 

roles 항목에 실행하고자 하는 roles의 이름을 입력합니다.

여기서 사용되는 이름은 roles 하위에 관리자가 지정한 폴더 단위로 관리가 됩니다.

 


task 코드 보기


 

 

task는 기존 task 설정과 크게 다르지 않습니다.

기존에 variable을 분리한 것과 동일한 item은 별도로 분리하게 됩니다.

 


variable 코드 보기


 

 

 

variable에 대해서 정의합니다.

 


template 코드 보기


 

 

 

Template은 기존과 다른 점은 별도로 없습니다.

 


실행 결과 보기


 

구성이 완료되면 아래와 같이, site.yml로 실행을 합니다.

 

 

 

실행 이후에 결과값을 보면, 원하는 결과 값이 만들어졌음을 알 수 있습니다.

 

 

처음에 언급한대로, site.yml은 최소화 시키고

그 안에 사용되는 task, variable 등은 기능별로 나누어서 관리를 하는 것이 기능이 복잡해질 수록 더 편해집니다.

또한, 기존에 만든 내용을 각각 재사용할 수도 있습니다.

객체지향에서 추상화에 따른 역할 분리와 비슷하다고 볼 수 있을 것 같습니다.

 

 

 


 


   Ansible Example 5


Ansible 5번째 예제는 하나의 Playbook 내의 Template에서

원하는 조건에 따라서, 해당 Template 내용을 적용할지, 안할지를 지정할 수 있도록 해보는 예제입니다.

Ansible에서의 조건문이라고 보면 될 것 같습니다.

조건문에 대한 값은 Variable에서 선언할 수 있습니다.

 

아래 예제와 결과를 보시면 좀 더 쉽게 이해 할 수 있을 것입니다.

 

 


task 코드 보기


 

 


variable 코드 보기


 

 

variable을 보면, VLAN 30이라는 항목이 true 혹은 false으로 지정되어 있는 것을 볼 수 있습니다.

이 부분이 조건에 대한 값이라고 볼 수 있습니다.

 


template 코드 보기


 

 Template에서 보면, vlan 10 ,20은 기본적으로 있는 반면에

vlan 30에 대한 정의는

 

{% if 조건 %} 

    ~~

{% endif %}

 

로 둘러 쌓여 있음을 볼 수 있습니다.

조건문에 둘러쌓인 내부는 조건이 참인 경우에만 적용되는 template 입니다.

 

 


실행 결과 보기


 

 

실행을  해보면, 정상적으로 동일하게 실행되었음을 확인할 수 있습니다.

실행에 만들어진 파일의 내용을 보면 아래와 같습니다. 

 

 

ZIGI5_1은 vlan 30이 True이었기 때문에 정상적으로 vlan 30 부분이 만들어졌습니다.

 

 

반면에, ZIGI5_2는 VLAN 30이 False였기 때문에 VLAN 30에 대한 부분이 만들어지지 않았음을 볼 수 있습니다.