# 앤서블이 어떻게 구성되고 실행는되는지 보기
[ 인벤토리, 구성 파일, 연결 방법, 모듈, 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 |