본문 바로가기

CICD

Ansible 개요

프로비저닝, 환경 설정, 애플리케이션 배포 등의 업무를 코드 기반으로 작성하여 편리하게 배포할 수 있도록 하는 자동화 도구 입니다.

오픈소스의 커뮤니티 앤서블과 레드햇 앤서블 오토메이션 플랫폼 두 종류가 있습니다.


Control Node : 제어 노드 ( 앤서블 코어가 설치되어 플레이북을 작성하고 실행하는 노드 )
Managed Node : 관리 노드 ( 플레이북이 실행되어 애플리케이션 설치나 사용자 요구 작업 등이 수행되는 노드 )


Python 모듈을 사용하기 때문에 모든 대상 서버에 Python 이 필수적으로 필요합니다.

https://kschoi728.tistory.com/179


플러그인 : 앤서블의 확장 기능을 제공
모듈 : SSH를 통해 관리 노드에 연결한 후 앤서블 모듈 이라는 스크립트를 푸시하여 작동, 매개 변수를 허용하며 모듈은 실행이 완료되면 제거됨
인벤토리 : txt 기반의 제어 노드가 제어하는 관리 노드의 목록을 나열한 파일 (그룹핑 가능)
1. 자동화 대상 호스트를 설정하기 위해 IP를 이용한 인벤토리 파일 생성
2. 앤서블이 호스트명으로 접근할 수 있도록 /etc/hosts 파일에 등록

10.100.100.1 node-1
10.100.100.2 mode-2


3. vi inventory

node-1
node-2
...
node-10


4. 그룹별 호스트 설정 방법
그룹명을 대괄호 [] 안에 작성하고 해당 그룹에 속할 서버의 IP나 호스트 명을 기입

[Web Server]
node-1
node-2
...
node-10


*한 서버는 여러 그룹에 속할 수 있다.
*호스트명에 범위를 지정하여 많은 수의 서버를 간소화 하여 표현할 수 있다

node-[1:10}



참고 유튜브 영상 : https://youtu.be/2cT0UeFpteg?si=SKqa_AE7KtTSg3RO

플레이북 : YAML 기반의 파일로 관리 노드에 SSH로 접근하여 수행할 작업을 정의하고 수행
*플레이북 작성 시 들여쓰기는 탭이 아닌 스페이스만 허용됨
--syntax-check 옵션을 추가하여 실행하면 플레이북의 문법을 체크할 수 있음
ex) ansible-playbook --syntax-check playbook.yaml
--check 옵션만 쓰면 제대로 실행되는지 미리 돌려볼 수 있음

플레이북을 작성 했다면 ansible.cfg 파일이 존재하는 디렉터리 내에서 플레이북 명령어로 실행

참고 유튜브 영상 : https://youtu.be/pEHmfycswWo?si=DPIi5GIZT8cj36sQ

앤서블 환경 구성 파일(ansible.cfg) : 키-값 형식으로 여러 섹션으로 구성되며, 앤서블에 대한 설정을 적용할 수 있다
[default] 섹션
inventory = 인벤토리 파일의 경로를 지정함.
remote-user = 앤서블이 관리 호스트에 연결할 때 사용하는 사용자 이름을 지정, 미지정시 현재 사용자 이름으로 지정됨
ask_pass = SSH암호를 묻는 메시지 표시 여부, SSH 공개 키 인증을 사용하는 경우 기본값은 False

[privilege_excalation]
become = 권한 에스컬레이션 활성화 여부, 연결 후 관리 호스트에서 자동으로 사용자를 전환할지 여부를 지정하며 일반적으로는 root로 전환됨 (플레이북에서도 설정이 가능하다)
become_method = 사용자 전환 방식 설정 (sudo, su 등)
become_user = 전환될 가용자를 지정, 기본값은 root
become_ask_pass = become_method 에 대한 암호를 묻는 메시지  표시 여부, 기본값은 False

참고 유튜브 영상 : SSH 연결 구성(https://youtu.be/5PihG-YGRto?si=lehmQNsoxZGwnk06)