2017년 6월 22일 목요일

[Ansible] '타워'를 통해서 GUI로 쉽게 관리하기 (7)



드디어 드디어~~
GUI를 !! 글을 올립니다.

그 대단원의 마지막을 장식할~~(사실 debug도 할 예정이긴 하지만;;)

시작하기 전에 굉장히 쉬울줄 알고 편한 마음을 가지고 했는데...
역시 인생을 쉽지가 않은지라...시행 착오가 여러가지 있었네요..


뭐하기만 하면, 자꾸 에러를 밷는 시스템...


최종 모델은 기존에 CLI에서 한 것처럼, nginx를 cuda 3총사에 배포할 것입니다.
아이디는 cuda이고 우분투 16.04버전입니당~!

결국 플레이북(PlayBook)으로 여러 대에 nginx을 한방에 설치하기 (3) 를 GUI로 구현한다고 보면 될 겁니다. :)

플레이북 짜기 어렵고, 나는 그냥 편하게 쓰고 싶은데 편하게 쓰게 해줘~!


의 컨셉으로 시작을 했는데......쉬운 것도 있고 어려운 것도 있고..그러네요 이건 마지막에 소감에서..


시작은 언제나 그렇듯 :) 

구성
             Ansible-controller (RHEL 7.2)               << 172.30.1.53
             |               |                   |
        cuda#1        cuda#2         cuda#3            << 172.30.1. (101, 102, 103)


1. 설치 파일 다운로드 

앤서블 컨트롤러에서 타워를 설치하는 파일을 다운로드부터 받습니다.

[root@Ansible ansible_tower]# curl -O https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 3761k  100 3761k    0     0   425k      0  0:00:08  0:00:08 --:--:--  530k

2. 사전 구성

그리고 압축을 해제하고, 설치(setup.sh)를 실행하기 이전에 세팅을 해야 할 것들이 있습니다. 바로 인벤토리 구성 파일에 암호 설정 입니다.





주의
그냥 설치하면 이렇게 됩니다. 



암호 설정을 안 했다고 에러를 밷는 친절한 설치 파일 


그런데~!그런데~~! 다 한거 같은데 이상한 에러를 밷습니다. 


정말 여러가지를 해 보면서, 아래와 같이....계속 삽질하다가..



두가지의 주요한 정보를 찾았는데 

[Errno 14] yum fails with HTTP/HTTPS Error 404
https://access.redhat.com/articles/1320623

How to solve %24releasever error when doing yum update?
https://access.redhat.com/solutions/1417753

결론부터 얘기하자면, 버전 정보를 해석하지 못해 다음과 같은 yum repo를 경로를 찾지 못한 것이었다.

시스템이 찾고자 하는 경로 
http://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-%24releasever-x86_64/repodata/repomd.xml

실제 repodata가 있는 경로 
http://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7.2-x86_64/repodata/repomd.xml



경로가 해석이 안되니, repo 업데이트를 못함 


그래서 다음과 같이 해결했다. 
[root@Ansible]# touch /etc/yum/vars/releasever
[root@Ansible]# echo "7.2" >> /etc/yum/vars/releasever

실행전 
[root@Ansible yum.repos.d]# python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
Loaded plugins: fastestmirror, product-id
{'arch': 'ia32e',
 'basearch': 'x86_64',
 'r': '7.2',
 'releasever': '$releasever',
 'uuid': 'fb0d8a73-9a42-47ec-844d-fac61c101a3c'}

실행후
[root@Ansible yum.repos.d]# python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
Loaded plugins: fastestmirror, product-id
{'arch': 'ia32e',
 'basearch': 'x86_64',
 'releasever': '7.2',
 'uuid': 'fb0d8a73-9a42-47ec-844d-fac61c101a3c'}

그러면 이제 설치가 쑥쑥 됩니다. 




이렇게 설치 완료~~~!!!

3. 앤서블 타워를 웹브라우저에서 접속 

(admin / password)  < 아까 인벤토리에서 입력했었음 



4. 라이센스 입력하기 
관대하게도 R사에서 10개 노드까지는 무료로 쭈욱~~ 쓰라고 했으니..편하게 10개를 테스트하기 위해서 라이센스를 받읍시다.


정보를 잘 입력하고 나면 이메일로 라이센스 파일이 온다.


 그러면 그 라이센스 파일을 'BROWSE' 버튼을 눌러서 입력하면 끝~!


5. ping 테스트 

사실 여기까지 하고 나서는...이제 쉽게 되는거만 보여주면 끝나겠지?
야호 이제 다 했다..라고 생각했었지....

미래의 나에게 애도를..


문제가 어떤거냐면....자료가 없다..
앤서블 코어나 플레이북 같은 경우는 아주 구글에 널리고 널린게 자료에 레퍼런스인데..
타워는 타워 도큐먼트를 제외하고는..거의 없다고 보면 된다..

특이하게는 시연은 많은데..내가 해보고 싶은건...간단하게 기능테스트인데..그런 설명을 찾아 볼수가 없다..

뭐..시작을 했으니...통밥으로 해야지하고 ...그냥 시도함..
사실 ping 테스트도 안 하고 바로 nginx를 설치하고 잘 되죠 끝~!
이런 계획이었으나...메뉴도 몇개 없는데..어디서 부터 해야 할지 몰라서 
ping 테스트부터 잘 되는 것을 확인하고자 했다.~~

삽질 중에 한 장면


우선 관리할 호스트들을 등록해야 하는데, 숫자가 많지 않으니 그룹을 만들진 않고 인벤토리에서 Cuda 인벤토리를 만들고 거기에 호스트들을 추가해줬다. 
(여긴 이미 Cuda를 만들어 둬서 밑에 인벤토리에 존재하는 것이다.)



그러고 나서 Cuda를 눌러서 들어가 보면, 호스트를 추가할 수 있게 하는 화면이 나온다.
관리할 호스트들을 여기서 추가해주자~!



추가가 끝나면, ping 테스트를 할꺼니까 그 중에 하나를 클릭 하고, 'RUN COMMANDS' 버튼을 누른다. 


이 상태에서 모듈은 ping으로 'MACHINE CREDENTIA'은 'Demo Credential'로 설정하고 진행하면 에러가 난다. 


곧 에러가 날 화면 

그게 이제는 알겠는데, Module은 yum, apt, shell 등과 같이 task에서 쓰여지는 진짜 모듈이고, Machine Credential은 이때 필요한 권한들인 것이다..
이게 의외로 설명이....자세히 꼼꼼히 메뉴얼을 정독하면서 볼수도 있겠지만...

어쨌든..이제는 유저 설정 및 권한 설정을 해야 한다는걸 알고 있으니, 
위에 톱니바퀴를 누르고 'CREDENTIALS' 타일(이런걸 타일 GUI라고 불러서;;) 을 누르자. 



그리고 다음과 같이 설정하고, 저장한다. 
(우분투들의 계정이름은 'cuda'이다. )



자 이제 다시 인벤토리를 가서 'RUN COMMAND'를 해본다. 



내 머리 속엔 앤서블, 너, 로맨틱, 성공적




5. 3개의 호스트에 한번에 nginx 설치 

드디어 대단원은 마지막이다.
다음과 같이 실행한다. 


여기서 all이라고 하면 모든 호스트(101번, 102번, 103번)를 말한다.


자 그러면 직접 호스트에서도 확인해 보자. 


잘 설치 되었다.~~~~!!!

6. 3개의 호스트에 한번에 nginx 삭제

그래도 설치도 해 봤으니 삭제도 해보는게 좋겠다. 
기존에 썼던 autoremove 옵션도 줬다. 



일단 성공적이라고 한다~~! 하지만 검증도 해봐야지

삭제도 어느정도 잘 되었다. 
(기존과 동일하게 연관 파일이 삭제 안되긴 했지만..이건 앤서블하고는 무관하다.)
두번째 실행한 것에 한개만 남아 있는걸 확인하시라~!


총평 

쉽고 편하고 재미가 있긴 한데..외부에 자료가 너무 없다..
그래서 따라하기 수준으로 하고자 할때 참고할만한 블로그, 기사, 튜토리얼이 전무한 실정이다..물론 CLI명령어가 편하고 가공도 쉽고 하겠지만, 생산성을 생각했을때는 ...
(업무를 효율적으로 하기 위해서 또 다른 업무를 배워야 하는가?)

일단은 간단한 결과라는 것은 이제는 알겠는데...여기까지 오는게 쉽지가 않다..
참고 할만한 데이터 혹은 자료가 공홈 말고는 거의 없는 실정이기 때문이다..

여하튼 기회된다면, 한번씩 써보시면서 즐거운 앤서블 생활이 되면 좋겠다~!
쉽게 AWESOME TOOL의 느낌이다. 


참고 자료 : 

앱서블 타워 소개

설치 가이드 

퀵스타드 가이드

유저 가이드 

어드민 가이드

애저용 앤서블 타워 가이드

2 개의 댓글:

  1. ansible-tower 삭제 방법을 아시는지요 ???

    답글삭제
    답글
    1. 이게 지메일로 알람이 오는줄 몰랐네요..
      삭제가 간편하지 않네요 -_-;

      아래의 내용을 참고하시는게 좋을 것 같습니다. 작성자가 제가 아니라서 링크를 걸어 드립니다.
      http://seungdols.tistory.com/699

      삭제

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