NETWORK & SEVER FACTORY

개인 공부 기록

DevOps/Ansible

[DevOps] Ansible이란?

1nfra 2022. 7. 24. 22:15
728x90

Ansible 이란?

 

배포와 관리를, 간소화/자동화하는 구성 관리 툴(Configuration management tool) 입니다.

다른 구성 관리 툴들과 다르게, Agent 설치가 불필요하여 간단하게 사용이 가능합니다.

 

앤서블의 역할?

기존 리눅스에서 여러대의 서버에 동일한 환경을 구성하기 위해 Bash 쉘 스크립트에 패키지의 설치, 설정파일 수정등을 나열하여 이를 실행하는 것이 일반적이었습니다. 하지만 최근에는 한명의 관리자가 관리해야 하는 서버가 증가함에 있어 한계점을 갖게 되었습니다. 이를 위해 lac(Infrastructure as a code) 개념이 생겼습니다. 이것은 환경의 배포와 구성을 규격화된 코드로 정의해 사용하는 것을 의미합니다. 이러한 자동화도구 중 가장 대표적인 툴이 바로 앤서블(ANSIBLE)입니다.

 

앤서블의 개념?

제어노드(Control node)

앤서블을 실행하는 노드입니다. /usr/bin/ansible이나 /usr/bin/ansible-playbook 명령을 이용하여 제어 노드에서 관리 노드들을 관리합니다.

매니지드 노드(Managed node)

앤서블로 관리하는 서버를 매니지드 노드라고 합니다. 매니즈드 노드는 호스트라고도 합니다. 

인벤토리(Inventory)

매니지드 노드 목록을 인벤토리라고 합니다. 인벤토리 파일은 호스트 파일이라고도 합니다. 인벤토리는 각 매니지드 노드에 대한 IP 주소, 호스트 정보, 변수와 같은 정보를 지정할 수 있습니다.

[webserver]
web1 ansible_host = 1.1.1.1
web2 ansible_host = 1.1.1.2

[db]
db1 ansible_host = 1.1.10.1
db2 ansible_host = 1.1.10.2

태스크(Task)

앤서블의 작업 단위입니다. 애드훅(ad-hoc)명령을 사용하여 단일 작업을 한 번 실행할 수 있습니다.

플레이북 (Playbook)

플레이북은 인벤토리 파일에서 정의한 대상들이 무엇을 수행할 것인지 정의하는 역할을하며, 플레이북에는 변수와 작업이 포함될 수 있습니다. 플레이 북은 YAML로 작성됩니다.

- name: nginx install
  hosts: all
  become: true
  tasks:
    - name: nginx package install
    apt:
       name: nginx
       state: installed

모듈(Module)

모듈은 플레이북에서 task가 어떻게 수행될지를 정의하는 요소입니다. 각 모듈은 데이터베이스 처리, 사용자 관리, 네트워크 장치 관리 등 다양한 용도로 사용됩니다. 단일 모듈을 호출하거나 플레이북에서 여러 모듈을 호출 할 수도 있습니다.

 

apt install python3 등. 예를 들어 apt 명령어를 통해 패키지를 설치할때 apt 모듈을 사용하면 되며 위 플레이북 예시에서 apt 부분이 apt 모듈을 정의하고 이를 사용하겠다는 의미 입니다.

 

 

728x90

'DevOps > Ansible' 카테고리의 다른 글

[DevOps] Ansible 실습환경 구성하기  (0) 2022.07.28