- Ansible이란?
애플리케이션을 원격 노드에 배포하고 반복적으로 서버를 프로비저닝하는데 사용되는 오픈 소스 도구이다.
다시 말해, it작업을 관리하고 배포하는 작업을 자동화 및 관리할 수 있는 자동화 도구이다.
간소화하고 신속하게 처리하는 데 중점을 둔다.
- IaC란?
Infrastructure as code 로 인프라를 구축하거나 관리하는 것
코드로 인프라를 이루는 서버, 미들웨어, 또는 서비스 등 인프라 구성요소를 코드로 구축하는 것
구축 뿐만 아니라 관리하는 것도 IaC라고 한다.
배포 도구 : 테라폼, vagrant, aws cloudFormation
구성 관리 도구 : Ansible, Chef
- IaC의 장점?
코드로서의 장점 : 작성 용이성, 재사용성, 유지 보수
비용으로서의 장점: 비용 절감
- Ansible의 장점?
1. ssh기반이므로 원격 노드에 에이전트를 설치할 필요가 없다.
2. YAML 언어를 사용하기 때문에 쉽게 배울 수 있다.
3. 플레이북 구조는 간단하고 명확하게 구조화 되어 있다.
- Ansible의 단점
1. 다른 언어를 기반으로 하는 도구보다 덜 강력하다.
2. DSL을 통해 로직을 수행한다. 즉 ansible 안에서만 로직을 수행할 수 있다.
3. 때때로 성능 속도가 저하된다.
- Ansible 용어
1. 제어노드 (컨트롤 머신, 엔시블 호스트, 제어 호스트)
중앙 시스템, 즉 ansible이 설치된 모든 호스트를 의미한다.
ansible은 python 기반이기 때문에 제어노드에는 무조건 python이 설치되어야 한다.
노트북, 데스크탑 및 서버 모두 ansible을 실행할 수 있다. 하지만 windows는 제어노드를 설치할 수 없다.
2. 관리 노드( 관리 호스트, 원격 노드)
제어노드에서 원격의 명령을 실행하는 작업을 수행한다.
제어노드에 의해 SSH 접속 요청을 받기 때문에 SSH가 설치되어야 한다.
python은 설치하는 것을 권장하지만, Ansible은 관리 노드에 설치되지 않는다.
3. 인벤토리
제어 노드에서 호스트가 속해 있는 그룹을 정의한다. 즉 관리 노드 리스트라고 할 수 있다.
여러 관리 노드를 그룹으로 조직화 할 수 있고, 중첩 그룹을 사용할 수 있다.
통신방법도 정의할 수 있으며, ip 또는 호스트이름을 사용하여 등록 가능하다.
4. 플러그인
ansible의 핵심 기능을 강화하는 코드 조각이다.
플러그인 아키텍처를 사용하여 핵심 기능을 확장할 수 있도록 여러가지 제공한다.
5. 모듈
ansible은 수많은 모듈의 모임이다. 모듈은 ansible을 실행하는 python 코드 단위이다.
하나의 모듈은 하나의 작업을 실행할 수 있다.
모듈은 관리 노드에서 실행하는 명령들과 같으며, 제어 노드에 존재하는 모듈이 관리 노드에 복사되어 관리 노드에서 실행된다.
6. 작업(Task)
ansible의 기본 실행 단위이다. 하나의 모듈이 하나의 작업이 된다.
7. 플레이
하나 이상의 작업이 모여서 플레이가 된다.즉 작업을 결합하여 특정 호스트에 매핑된 작업을 순서대로 그룹화한 플레이를 만들 수 있다.
8. Ad -hoc 명령
임시 명령으로 부르기도 하며 시스템에서 빠른 작업을 수행하도록 설계된 한 줄짜리 명령이다.
플레이북을 만들지 않고 바로 터미널에서 명령어를 입력해서 실행한다.
9. 플레이북
하나 이상의 플레이를 가지고 있는 YAML 파일이다.
10. 역할
플레이북이 너무 커지면 변수나 작업을 별도에 파일에 구성하는 것을 말한다.
알려진 파일/ 디렉토리 구조를 기반으로 관련 변수, 파일, 작업 등 아티팩트 모음이다.
11. 컬렉션
플레이북 및 역할, 모듈, 플러그인을 포함하는 콘텐츠 배포 형식이다.
깃허브에 올려서 배포가 가능하다.
12. 연결 플러그인
SSH 말고도 관리노드에 원격으로 연결 할때 사용하는 방법이다.
- Ansible 아키텍처 구성
시스템 유형으로 제어 노드와 관리 노드가 있다.
컨트롤 노드에 ansible이 설치되며 관리 노드들은 제어 노드에 의해 유지되거나 관리된다.
관리 노드들은 인벤토리 파일에 나열되어야 하며, 여기에는 호스트이름 또는 ip 주소로 저장한다.
제어 노드는 기본적으로 ssh를 사용하여 관리노드와 통신한다.
- Ansible 중요 특징
멱등성 : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
따라서 명령어를 직접 명령하는 것이 아닌 모듈을 사용하는 것을 매우 권장!!
'Infra > ansible' 카테고리의 다른 글
ansible facts 실습 (0) | 2024.05.23 |
---|---|
플레이북 실습 (0) | 2024.05.22 |
플레이북 (0) | 2024.05.22 |
ansible ad-hoc 실습 (0) | 2024.05.21 |
인벤토리 (0) | 2024.05.21 |