- AWX 설명
- 기존 비정형 자동화 스크립트들 (shell,perl,python...etc)을 Automation에 방점을 찍어 기능의 모듈화(정형화), python 기반 + yml(야뮬,YAML Ain't Markup Language)을 적용하여 자동화를 지원하는 언어로써 Ansible이 있다.
이 Ansible은 그저 언어 형태를 가지기만 할 뿐 실제 스크립팅(playbook제작)은 사용자 몫이며
작은 단위의 실행에서는 CLI형태(Ad-hoc)로 작업이 가능하지만 Enterprise 영역에서
사용자마다 권한 설정, SCM관리, 병령, 분산처리, 실행결과 로깅, 등등의 필수적인 기능은 제공되지 않으므로
직접 구현해야 하는(배보다 배꼽이 크다)형태라 이 부분을 제공하는 제품으로 Ansible Tower라는 제품을 Redhat에서 제공(판매)한다.(레드햇은 Ansible, Inc를 인수했다. ansible org 역시 메인 서포터는 레드햇)
이 Ansible Tower의 OSS 버젼이 AWX(Ansible Worker)이다.OSS라면 기능의 차이는 어떨까 레드햇 의 OSS를 Enterprise로 전환 방법과 비지니스 모델은 거의 모든 제품에서 유사하다
Software이므로 쉽게 설명하면 CentOS와 RHEL을 비교하면 되겠다
두 개의 차이는 거의 없으나 CentOS는 빠르게 업데이트가 반영되는 반면 안정성이나 지원이 부족하고
RHEL은 CentOS의 Stable버젼으로 판단되는 시점에서 별도 브렌치되어 개발(보안,특화기능추가) 배포 되므로 서브스크립션을 구입하면 지원과 업데이트 등이 가능해 진다.각설하면 기능은 다 되는 것으로 판단할 수 있다.(클러스터 등 몇몇 주요 기능은 2019년 Q1 현재 구현되지 않았다) 하지만 상용 버젼으로 패키징하는 단계를 거치지 못했기 때문에 여러모로 부족한 부분이 있다.
(예를 들어 초기 만 해도 설치 스크립트가 없어서 yml을 직접 수정 작성해야 했다)안되면 게시판을 전전해야 하는 것은 OSS버젼을 쓰는자의 숙명?인듯 하다...... - 오해 하지 말아야 할것
- AWX는 platform만 제공한다.
- 말 그대로 AWX는 플렛폼이다. 템플릿팅을 지원하고 로그, 권한 관리등...이 글을 읽고는 바로 와 닿지 않으 수 있지만 기업에서 사용하기 위한 여러가지 기능을 별도의 개발없이 사용할 수 있도록 지원한다
- 예를 들어 awx의 로그를 elastic search에 연동해서 kibana에서 조회하고 싶다면 AWX의 logging 기능에서 logstash로 직접 log를 발행해주는 기능을 사용할 수 있다.
- 다만 실제 제어를 위한 부분은 사용자가 개별 개발해야한다. 과거 티볼리나 HP 자동화 솔루션을 접해보거나 데모를 봤다면 "AWX가 알아서 뭔가해주는거아니야?" 하겠지만 어림 1도 없다. 모든 제어는 사용자가 yml형태의 code를 짜야한다.
- 물론 이 부분에서 ansible 갤럭시라는 이미 여러 케이스의 기능에 대한 샘플을 볼 수 있지만 내가 필요한 것 보다 과도하게 코드가 복잡하거나 여하간 수정하지 않고 그대로 쓰기에는 문제가 있다. 그래도 그것만 해도 대단한거다 쌩으로 다 짜려면 쓸대없는 시간이 많이 날아 간다...특히나 띄어쓰기와 오타....
- redhat 세일즈나 파트너사에서 이야기 하듯이 무지 쉽지않다 오해 하지말자, 다시한번 말하지만 알아서 해주는 부분은 "ansible을 개발하는 개발자가 기업에서 사용하기 위한 환경"에 대해서 도움을 주는것이다.
- 말이 좀 그렇지만 그렇다고 뭐 엄청 어려운건 아니다 셈플 몇개 보고 해보면 금방한다. 오히려 개발해 본 적이 없거나 자신의 PC에 IDE 환경이 만들어져 있지 않다면 그런 환경을 구성하는데 시간을 더 보낼지도 모르겠다. 기존 개발을 위해 atom, eclipse,intelliJ 등의 IDE 환경이 구성되어 있고 git에 code pull/push 할 줄 아는 정도의 시본 스킬이 필요하다
- 특히나 시스템업무를 주로 하면서 vi가 지상최강의 editor라며(인정!) 일을 하시는 스크립트 장인분들은 초반 접근이 무지 귀찮을 것이다.
- 세상이 변했다 devops건 SRE이건 장비쟁이가 코드모르거나 개발쟁이가 시스템 모르면 일하기 개 빡신세상이다. 공부해라 공부해서 남줘라
- AWX 설치
- Pre-Install
- add docker repo
awx는 docker기반으로의 배포만 지원한다. openshift와 kubernetes환경도 지원하지만 automation을 위해 그런 제품을 사거나 환경구성을 위한 공수를 들이기는 오버이지 싶다 - Install docker
OS에 docker를 구동하기 위한 환경을 구성한다 - Install Ansible & pip & docker compose
AWX를 쓰는것 자체에서는 필요없겠지만 ansible로 제어를 하려다보면 가끔 python module을 사용해야 할때가 있다. 이때를 위해서 pip를 설치한다. - vmomi(VMware Managed Object Management Interface) - need for vMware control
옵션이다 vmware를 자동화 하기 위한 모듈로 이런것도 설치해서 쓴다는 정도만 알고 있으면 되겠다. 필수사항이 아니다. - pip module - some lib is need upgrade
돌리다보면 ansible version마다 사용하는 python module이 버전이 낮은경우 문제들이 발생하는 경우가 있다. 특히나 url module등에서 많이 발생하는데 이런 경우 아래처럼 설치하거나 업그레이드 해서 회피 가능하다.
- official awx clone
여기서 부터가 실제 AWX를 설치하는 부분이다.- opensource awx not support HA
AWX를 그냥 받아서 쓰면 SSL도 안되고 HA도 안된다 이 문서에서는 그 부분을 다루지 않는다....시간나면 써보겠지만.... 여하간 좀 찾아보면 할 수 있기는한데 ......(세상에 안되는게 어디있나 사람 갈아넣으면 다 되지....ㅠ.ㅠ)
소스를 받아서 로컬에 저장한다 -b 는 해당 git 에서 특정버전을 지정한다. 지정하지 않으면 최신버전이 내려온다
- make install script
- file : /tmp/awx/installer/install.sh
그냥 손으로 돌려도 되지만 한방에 설치되리라는 보장이 없다 할때마다 타이핑 치기 귀찮아서 shell 파일 하나 만든다.
- edit config
- file : /tmp/awx/installer/inventory
이건 취향에 따라 다른데 기본값으로 설치해도 된다. 그런경우 저장되는 위치가 여기저기 흩어지기 때문에 내 경우 /data 파티션을 하나 만들고 그 아래에 몰아 넣도록 했다
dockerhub_version= 은 이걸 지정하지 않으면 최신 버전의 docker image르 받아오므로 위체 clone할때 지정한 버전과 같도록 해준다
위에서 지정을 하지 않았으면 최신버전이므로 inventory에도 지정하지 않으면 최신 이미지를 받아온다 - make folder
AWX의 데이터는 docker로 구동되는 pgsql DB에 저장된다. 이 저장소가 docker container에 저장될 수 는 없으므로 local disk의 어딘가 저장되며 나의 경우 위에 inventory 설정에서 /data/pgdata 라고 지정했으므로 해당 폴더를 만들어준다.
- install and check
- path : /tmp/awx/installer/install.sh
이제 별 문제가 없다면 installer를 돌려준다.
ansible log가 화면가득 떨어질것이고 문제가 있다면 에러를 내고 떨어질것인데...
문제를 해결하고 중복해서 여러번 돌려도 걱정하지 않아도 된다
설치 스크립트 자체가 ansible이기 때문에 여러번 수행해도 별 문제 없다. 돌리고 에러나면 처리하고 다시돌리고....또 돌리고...될때까지 돌리자 ㅋㅋㅋ - connect awx (web browser)
처음 설치되고나면 docker가 기동되고 DB에 기본 schema생성을 위해 1~2분 정도 소요된다. 물론 서버의 성능에 따라 천차만별이겠지만...
아래 URL로 접속해서 뭔가 화면에 나오고 화살표가 빙글빙글돌고 있다면 속편하게 기다리자- http://${IP_ADDRESS}
- default ID/PASS : admin / password
- 기타
- 설치하고 아무것도 안나오고이상하다면 아래 명령어를 쳐서 docker가 구동중인지 정도는 확인할 수 있다
- #docker ps
- docker는 5개가 구동된다.
- awx_web : 사용자 UI다 내부는 nginx로 되어 있다.
- awx_task : awx_web에서 수신받은 처리를 담당한다. python process로 확인된다.
- awx__rabbitmq : 클러스터 구성시 job을 공유하기 위해 사용된다. 다만 awx를 그냥 설치하면 cluster구성이 안되므로 큰 의미는 없다
- postgres : awx의 각종정보가 저장되는 RDB이다. pgsql 9.6으로 되어 있다. 10까지는 설치해서 외부 DB로 사용해 봤는데 문제 없이 사용가능하다
- memcached : 걍 케쉬다
- log를 보고싶다면
- docker 명령어를 좀 배우면 된다.
- log : # docker logs -f awx_web
- docker에 접속해서 설정을 보고싶다면 아래 명령어를 사용해서 container의 shell을 실행해서 접근을 할 수 있다.
- # docker exec -it awx_web /bin/bash
2019년 9월 9일 월요일
AWX(Ansible worker) 설치 방법
피드 구독하기:
글 (Atom)