본문 바로가기

클라우드/앤서블(Ansible)

앤서블 Ansible 동작 원리

# 앤서블이 어떻게 구성되고 실행는되는지 보기

[ 인벤토리, 구성 파일, 연결 방법, 모듈, Ad-hoc 명령어]

 

1. Ad-hoc : ansible

2. Playbook : ansible-playbook

하나의 모듈은 하나의 작업으로 실행, 이 작업을 하나의 플레이라고 하는 단위로 사용, 이 플리에 모여 플레이북이 된다

Module -> Task -> Playbook

 

두개 다 공통적으로 설정파일과 인벤토리가 필요하다.

두가지를 설정 한 후 명령어를 이용해서 테스크를 선언한다. 모듈(미리 만들어 놓은 파이썬 코드)이 SFTP로 해당되는 관리대상이 되는 노드로 복사가 되고, 파이썬 인터프린터를 이용해 실행한다.

# 앤서블 설정 파일 구성

ansible.cfg  설정파일  / hosts 인벤토리

-> 기본 설정파일과 인벤토리는 사용하지 않는다

 

ansible.cfg 사용자 설정파일

defaults 섹션에 inventory라는 속성을 선언

인벤토리 파일 위치(경로)를 지정한다

 

인벤토리 파일에는 관리 노드를 모아놓은 그룹(mgmt)을 적는다

실제 ssh로 통신 가능 한 관리 노드의 IP, 호스트 이름 지정

 

 

# Ad-hoc 커멘드 

[  ] 옵션 [  ]가 없으면 필수 설정

pattern 필수 설정  인벤토리의 그룹이나 호스트를 지정

 

앤서블을 실행 할때 task가 제일 중요 task는 모듈로 만든다

모듈의 리스트를 확인

모듈의 이름                              간략한 설명

 

특정 모듈의 상세정보를 확인 할 수 있다

시스템에 접근이 성공적으로 되면 pong 이라는 return값을 출력

 

 

ping 모듈을 사용해서 하나의 작업을 진행

ansible -m ping(모듈이름)  -a 'data=pong'(모듈의 아규먼트,파라미터,옵션즈) mgmt (pattern/인벤토리에 있는 그룹명)

모듈에 따라 변수는 다 다르다

SUCCESS : 작업을 이상없이 실행했다, 시스템의 변경사항은 없다

 

apt모듈 데비안이나 우분투 apt패키지를 관리 (설치,제거)

 

apache 패키지를 설치한다고 가정했을때

패키지 이름이 필요하다

파라미터에 따라서 별칭을 붙일 수 있는데 name대신 package, pkg로 써도 된다

상태가 필요 패키지의 상태를 정의한다 present 존재함 => 설치  absent => 삭제

 

 

 

name과 state 파라미터를 지정

rc : 100 (비정상종료 ,0번이 정상종료)

stderr (표준오류) : Permission denied 권한이 거부 되었다 - 패키지를 설치는것이기 떄문에 관리자 권한이 필요하다 

FAILED : 작업 실패

 

-b 옵션 --become 권한 상승 (관리자 권한 취득, 내부적으로 sudo )

-b 옵션을 써서 실행 

CHANGED : 시스템이 변경 되었다 (패키지가 설치 되었음)

 

 

관리 노드에 들어가서 확인

 

apache가 설치 되었다

 

 

 

 

 

 

 

 

더보기

ansible -m ping -a 'data=pong' mgmt
ansible -m ping mgmt
 ansible-doc apt

ansible -m apt -a 'name=apache2 state=present' 192.168.200.101
ansible -m apt -a 'name=apache2 state=present' 192.168.200.101 -b

ssh 192.168.200.101

 rm ~/.ansible.cfg ~/inventory.ini 

 ansible -m ping mgmt
 

'클라우드 > 앤서블(Ansible)' 카테고리의 다른 글

앤서블 Ansible AWS 동적 인벤토리  (0) 2021.07.28
앤서블 Ansible 정적 인벤토리  (0) 2021.07.28
앤서블 Ansible 이란? / Ansible 용어  (0) 2021.07.27
앤서블 Ansible 설치  (0) 2021.07.27
IaC 개요  (0) 2021.07.27