2017년 11월 19일 일요일

[Ansible] Template의 용도는? (1/2)



앤서블을 하다 보면 Template은 처음에 상당히 생소한 개념이더라고요.
사실 알고보면 정말 별거 없는데....

가장 쉽게 설명하자면 파워포인트 템플릿이 있을 것입니다.
아래의 예제는 파워포인트에 내장되어 있는 비지니스 템플릿인데요
작성에 도움을 주기 위해 미리 지정되어 있는 걸 말하죠.

(출처 : http://meaningone.tistory.com/602)

이거랑 거의 1:1로 매칭 되는 개념이 앤서블의 Template입니다. 
즉 작성을 도움을 주기 위해 미리 지정되어 있는 서식 파일 같은 것입니다. 

사실 가장 template이 많이 쓰이는건..cfg 즉, 구성파일/환경 설정 파일을 가장 많이 사용합니다. 추후에 다루게 될텐데, 롤베이스로 해서 여러사람들이 사용하려면 각각에 사용환경에 맞게 구성 파일이 설정되어야 하는 경우가 있는데, 이때 여러가지의 환경 정보를 읽고 그에 맞게 cfg를 설정해서 적용할때 가장 많이 사용됩니다. 

그런데 이런건....배포하는 앤서블 패키지의 완성도를 높이려고 하는거고...
이를 위한 실습이나, 당장 사용에 목적에 부합하는 걸 찾아봐야 겠죠?

그래서 준비한 것은!!!

사골처럼 계속 우려먹는 nginx 입니다~
알다피시 nginx는 안되는 운영체제가 거의 없는 솔루션이다 보니..
설치 이후에 체크하는 방법도 운영체제에 따라 다르게 되죠. 

근데...저만 그런가..매번 헷깔리더라고요 -_-;

(이러지 맙시다, 우리는 운명공동체 / 동지동지!!)

그래서 맨 마지막에 각각 설치된 운영체제는 어떤건데, 이렇게 체크하는거야 라고 자동으로 알려주면 좋겠죠?

그런 목적으로 작성된 코드입니다~!

[ nginx_msg.yml ]

1
2
3
4
5
6
---
- hosts: nodes

  tasks:
    - name: How to check the status of nginx for each of OS.
      debug: msg="{{lookup('template','msg.j2').split('\n')}}"


[ msg.j2 ]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{% if ansible_distribution == 'Ubuntu' %}
   [ OS : Ubuntu ]
    >> dpkg -l | grep nginx
    OR
    >> service nginx status
{% elif ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' %}
   [ OS : CentOS ver7 ]
    >> yum list installed | grep nginx
    OR
    >> systemctl status nginx
{% elif ansible_distribution == 'CentOS' and ansible_distribution_major_version < '7' %}
   [ OS : CentOS ver6 ]
    >> yum list installed | grep nginx
    OR
    >> service nginx status
{% else %}
    >> service nginx status (* Gernally)
{% endif %}

참 특이한 점은 template은 jinja2라는 파이썬(주로 장고와 플라스크)에서 템플릿에서 사용하는 것을 차용해서 씁니다.
그래서 왠지 또 다른 언어를 배우는 느낌으로 짜야 되는...단점이 있긴 한데 말이죠..일단 많은 기능을 사용하지 않고, 스크립트 짜듯 짜도 되니 크게 신경 안 쓰셔도 될 것 같습니당!

결과는 어떻게 나오는지 확인하고 마쳐 볼까요~!



OS를 자동인식하고 조건에 맞게 출력해 주는 예제이며.. 상황에 따라 해당 template을 재 활용할 수 있고, 좀 더 조건을 세밀하게 조정한다면 더 다양한 상황에 맞게 동작하게 작성할 수 있겠네요.

template이 한번에 와 닫지 않을수 있으니, 다른 예제를 다음 시간에 한번 더 해볼께요.
빠잉!

0 개의 댓글:

댓글 쓰기

 
Copyright © . 엔지니어를 위한 파이썬 및 기술 블로그 - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger