2017년 12월 6일 수요일

[Ansible] 롤롤롤 (LoL 아님 / Role임) 그대는 누구시길래~!

오랜만에 글을 씁니다~!
1주일에 2개씩 올려야 하는건데...그동안 콜록콜록 아파서....

환자 짤에 대한 이미지 검색결과
(빈칸에 뻥치시네 라고 보이는건 착시입니다  -_-)

여하튼....이번시간에는 롤(Role)이라는 것을 알아 볼 겁니다.
근데 롤은 어디다가 쓰는 걸까요?

사실 꼭 필요한 기능은 아닙니다.
롤이 없어도 머....사용하는데 아~~~무~~~~런 지장이 없습니다.
다만...그런거 있잖나요 include_tasks하는 마냥 코드가 멋있게 이쁘고 산뜻하게
규칙이 딱딱 맞는 느낌인거?

그리고 사용자가 이런거 하나하나 고려하지 않고 그냥 쓰고 싶은거죠
제가 가장 자주 쓰는 nginx 세팅하는걸 내가 하나하나 구성하고 싶지 않다는거죠
게으름을 창조력을 만드는 법이죠 :)

게으름 짤에 대한 이미지 검색결과


이해를 돕기 위해 한가지 예를 들어볼께요.
Linux 명령어 중에 Copy라는 명령어가 있습니다.
이게 복잡하게 시스템에서 이루어지는 작업은 아래처럼 정신 사납게 되어 있답니다.
그런데 우리가 이걸 꼭 알아야 할까요? 그냥 복사하고 싶은건데 말이죠~!

copy 호출 프로세스에 대한 이미지 검색결과

그런 것처럼, Role에서 nginx라는걸 호출만 하면 원하는 작업이~! 이루어지는 그런 방식인거죠 :)

그러기 위해서 Role은 이런 것들을 정의해 놨어요
이걸 다 정의해야만 동작하는게 아니라 필요한 것만 정의를 해 놓으면 그에 맞게 불러와서 동작한답니다

우리 친절한 공홈이 아래와 같이 설명해 놨지만...

  • tasks - contains the main list of tasks to be executed by the role.
  • handlers - contains handlers, which may be used by this role or even anywhere outside this role.
  • defaults - default variables for the role (see Variables for more information).
  • vars - other variables for the role (see Variables for more information).
  • files - contains files which can be deployed via this role.
  • templates - contains templates which can be deployed via this role.
  • meta - defines some meta data for this role. See below for more details.
이걸 보면 멀하는지 알수 없으니 우선 설명부터~!

[ tasks ]
그동안 우리가 썼던 그~그~ tasks입니다.
똑같아요
있다가 예제를 보시면 더 쉽게 아실수 있을꺼에요~!

[ handlers ]
아주 먼 옛날에 잠깐 썼었죠 handlers를~!
이건 tasks와 같은 것이 성공! 하면 변경! 등에 대한 트리거를 받아서 행동하게 짤때 씁니다.

[ defaults ]
이건 일반적으로 변수와 같은 것들을 기본!!으로 등록하는 곳인데요.
우선순위가 아~~주 낮은 변수 그러니까 정말 기본을 등록하고 다른 vars와 같은 곳에서 사용하고 업데이트 한답니다.

[ vars ]
우리가 플레이북을 짤때 넣었던 그 vars이 이 vars입니다.
똑같아요 다만 이건 우선 순위가 defaults에서도 등록한 변수보다 높습니다. 즉 덮어쓰기가 된다는거죠 :)

[ files ]
파일 즉 파일 자체를 추가할때 주로 쓰입니다~
가장 유명한 모듈은 copy 가 있겠네요.
이쯤 오면 왠지 감이 오시죠..그냥 목적에 맞게 나누어 놓은것?
안 필요하면 안 써도 됩니다~~그냥 디렉터리를 지워버리면 되요

[ templates ]
가장 최근 다룬 그 템플릿 jinja2의 양식을 따르는 그 템플릿 입니다

[ meta ]
meta라는건 약간 생소하실텐데 현재의 파일들에 대한 정보를 담고 있는 데이터를 말하며,
실제적으로는 dependencies 그러니까 이거 하기 전에 우선적으로 선행되어야 하는 작업(즉 role)을 지정합니다.
메타데이터 참고 : https://ko.wikipedia.org/wiki/메타데이터

고로 정리하자면, 이거 안해도 되는데, 왠지 구조가 멋있고, 재 사용이 잘될 것 같고.

그래서 쓰이는 겁니다 :)
다음 글에서 예제를 통해서 살펴보겠습니다~!

0 개의 댓글:

댓글 쓰기

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