오픈 소스
앤서블(Ansible) 구성 및 기본 사용법
jssvs
2021. 6. 11. 16:56
반응형
1.앤서블(Ansible) 이란?
- python으로 개발됨
- 환경설정, 배포를 가능하게 하는 툴
- 깃허브 파이썬 랭킹중 상위.
- 장점자동 배포 환경이 쉽다
- 멱등성(여러번 적용해도 결과가 바뀌지 않음)
- 빠른 ssh 통신. 빠른 provision이 가능
2.왜 앤서블(Ansible) ?
아직 실무에 앤서블을 적용해보기 전이고, 편리함, 이점이 피부로 와닿지는 않지만, 아래의 상황에서 좋을 것 같다
-> 작업자가 서버 셋팅을 반복적으로 해야 하거나,다수의 서버에 클러스터로 동일한 설정을 해줘야 할 경우
2.앤서블 설치
pip 을 통해 설치가 가능하다
$pip install ansible
3. 앤서블 사용하기
a) Inventory 설정
- 타겟이 되는 host(managed node)들에 대한 메타정보를 기술한 파일이다. -> 쉽게 말하면 내가 어떤 서버들에 작업을 할건지, 서버
- 호스트마다 변수를 지정할 수 있으며 호스트 변수라고 한다
- yaml , ini 포맷으로 작성해야 한다
- ansible을 설치경로에 ansible.cfg 설정파일을 통해 mannual 하게 경로를 줄 수 있다
ansible.cfg
[defaults]
inventory=/home/jssvs/work/ansible_inventory
hosts
[airflow_worker]
airflow-worker-01 --> 이 부분은 /etc/hosts 에 등록되어 있으면 호스트명을 쓰면 된다.
airflow-worker-02
[airflow_scheduler]
localhost
ansible에 등록된 host 간 네트워크 통신이 되는지 ping 으로 체크 방법
$ ansible all -m ping
b)Playbook 작성
- 등록된 호스트에 뭘 하게 할건지를 기술하는 파일이다. 워크플로우 작업들을 작성하면 된다.
- 룰커맨드 실행/ 스크립트 실행 / 인스톨 패키지 등등을 정의할 수 있음특수문자( - ) 으로 플레이 단위를 구분한다.탭을 쓰면 안된당
- 시작은 —-로 한다.
- command, script, yum, service 등의 모듈을 지원한다.
- 호스트에서 동작할 task 활동을 정의
- yml 작성후 웹에서 yaml lint 사이트를 이용하여 들여쓰기를 정리하면 편하다.
- http://www.yamllint.com
Playbook1.yml
#Simple PlayBook1.yml
---
-
name : play1
hosts : localhost
tasks :
- name : Execute command 'date'
command : date
- name : Execute run script
script: test_script.sh
- name : test2
shell: "echo 'helloworld' >> /home/deploy/ansible_print.log
-
name : play2
hosts : airflow_worker01
tasks :
- name : Install Yum package
yum :
name: httpd
state : present
- name : Run httpd server
service :
name : httpd
state : started
c) Playbook 실행
$ansible-playbook <playbook-filename>
반응형