1. Ansible 개요
- IT 인프라를 자동화하고 관리하는 도구
- 설정관리 (Configuration Management)
- 애플리케이션 배포
- 작업 자동화 및 오케스트레이션
1.1 Ansible의 기본 개념
- 에이전트리스(Agentless):
- 별도의 소프트웨어 에이전트를 관리 대상 시스템에 설치할 필요가 없다
- SSH 프로토콜을 통해 원격으로 시스템에 접근
- 데클러러티브(declarative) 방식
- "무엇을" 해야 하는지를 명확히 기술하는 선언형 방식으로 동작
- 서버에 특정 파일의 내용이 어떻게 되어야 하는지를 정의하면
- 앤서블은 해당 상태에 도달하기 위해 필요한 작업을 수행
- 플레이북(Playbook)
1.2 Ansible 구성요소
- 플레이북(Playbook)
- 작업의 정의가 들어있는 파일
- 여러 태스크(tasks)를 포함한 일련의 자동화 단계 기록
- YAML 형식 작성
- 하나의 플레이북은 여러 개의 "플레이(plays)"로 구성
- 각 플레이는 하나 이상의 호스트 그룹에 적용됩니다.
- 모듈(Modules)
- 파일 복사, 패키지 설치, 서비스 관리 등의 작업을 수행하는 작은 스크립트
- 대표적인 모듈 :
yum, apt, service, command, copy
- 인벤토리(Inventory)
- 호스트 목록을 정의
- 기본적으로
/etc/ansible/hosts 파일에 관리 대상 호스트들을 정의할 수 있음.
- 호스트는 IP 주소 또는 DNS 이름으로 정의
- 롤(Roles)
- 태스크, 핸들러, 변수, 템플릿, 파일 등을 구조적으로 조직화하여 재사용
- 핸들러(Handlers)
- 특정 이벤트가 발생했을 때 실행되는 태스크
- 조건부로 실행
- 예를 들어, 설정 파일을 변경한 후 서비스를 재시작해야 할 경우 핸들러 사용
- 템플릿(Templates)
- Jinja2 템플릿 엔진을 사용하여 구성 파일을 동적으로 생성하는 데 사용
- 플레이북에서 변수 값을 사용해 템플릿 파일의 내용을 생성하고 대상 시스템에 배포
1.3 Ansible 작동원리
- 컨트롤 노드 (Control node)
- 명령 실행
- 플레이북 작성, 실행
- SSH를 통해 매니지드 노드와 통신
- 매니지드 노드 (Managed node)
1. 인스턴스 설정
1.1 Ansible 설치
sudo apt -y update
sudo apt -y install ansible sshpass
ansible --version
1.2 타겟 설정
sudo mkdir /etc/ansible
sudo nano /etc/ansible/hosts
[target]
10.0.102.48
10.0.102.102
1.3 공개키 / 비밀키 설정
ssh-keygen -t rsa -f ~/.ssh/id_rsa
cd .ssh
cat id_rsa.pub
vi ~/.ssh/authorized_keys