Ansible 이란?
Ansible은 코드 기반으로 인프라 관리를 자동화하는 도구이다.
Infrastructure as Code(IaC)가 등장하며 코드를 통해 IT 인프라를 자동 설치 및 구축/관리/프로비저닝 하는 프로세스가 생겼다. 즉, 코드 스크립트를 실행하기만 하면 코드가 알아서 인프라 관리 및 설치를 가능하게 하여 인프라 구축을 자동화로 가능하게 해주는 관련 도구들이 등장했다.
Ansible은 오픈소스 기반의 자동화 관리 도구로 IaC를 지향한다.
즉, 자동 구축/관리하려는 원격 인프라에 명령을 전달하여 작동하는 방식이다.
Ansible의 특징
1) Agentless
Ansible은 SSH기반으로 원격 서버에 명령을 전달하는 툴로 에이전트가 필요 없다.
그렇기 때문에 명령을 내려주는 Controller 서버와 원격 서버에 설치된 Agent들과 명령을 주고받을 필요가 없다.
즉, 각 원격 서버에 접속해 Agent를 설치할 필요가 없으므로 프로세스를 하나 제거하여 자동화에 더 가까워진다고 할 수 있다.
2) 접근 용이성
Ansible은 playbook(명령어 모음집)을 YAML 형식의 파일로 관리한다.
YAML 파일은 가독성이 좋아 Ansible을 사용하는 사용자들에게 좋은 접근성을 제공한다.
Ansible에서는 Controller 서버가 원격 서버들에게 명령을 전달하여 동작하기에 자동화를 위해서 명령어를 한 번에 처리를 해야 한다. (쉘 스크립트를 실행했을 때 스크립트 안에 모든 명령이 전부 실행하 듯이)
3) Idempotence (멱등성)
Idempotence (멱등성) 이란 전산학이나 수학에서 사용하는 용어로 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질, 또는 연산을 여러 번 반복하여도 한 번만 수행된 것과 같은 성질을 의미한다.
즉, 메서드가 여러 번 실행되어도, 결과가 같기에 안전하게 사용할 수 있는 성질이다.
Ansible은 YAML로 관리되는 명령집을 여러 번 수행해도 항상 같은 결과가 나오도록 관리를 해주는 tool이다.
Ansible 구조
1) Ansible Workstation
Ansible 명령을 여러 원격 서버에 전달하는 주체로 Ansible이 설치되는 서버이다.
Ansible은 Agentless로 이 서버에만 ansible을 설치하면 된다.
2) Inventory (Ansible Hosts)
Inventory는 Workstation에서 명령을 전달한 원격 서버들의 목록을 의미한다.
/etc/ansible/hosts 파일(인벤토리)에 위 원격 서버들의 목록이 저장되어 있다.
3) PLAYBOOK
원격 서버에 전달할 명령들을 모아둔 명령집이다.
즉, 스크립트 파일이라고 할 수 있다.
'DevOps > ANSIBLE' 카테고리의 다른 글
2. Ansible 설치 & 초기 설정 & 기본 명령 (CentOS 7.9) (0) | 2023.12.08 |
---|