오픈 소스

앤서블(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
 

YAMLlint - The YAML Validator

YAML Lint Paste in your YAML and click "Go" - we'll tell you if it's valid or not, and give you a nice clean UTF-8 version of it. Optimized for Ruby.

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>
반응형