Ansible은 클라우드 또는 데이터 센터 인프라에서 변경 사항을 관리하는 가장 널리 사용되는 DevOps 도구입니다. 이 기사에서는 Ansible이 어떻게 작동하는지 개요를 얻고 Ansible으로 시작하는 방법을 알아보게 됩니다.
Ansible이란?
Ansible은 여러 서버에 애플리케이션과 시스템 구성을 쉽게 배포하는 데 사용되는 자동화 플랫폼 도구입니다. 리눅스 서비스를 시작하고, 수십 명의 리눅스 사용자를 생성하고, 비밀번호를 업데이트하는 등 다양한 작업을 수행할 수 있습니다.
Ansible은 SSH 프로토콜을 통해 기기를 관리하는 에이전트 없는 솔루션입니다. 데이터베이스가 필요하지만 백그라운드 서비스(데몬)를 사용하지 않습니다.
Ansible은 내장된 아드호크 명령과 Ansible 플레이북을 사용하여 소프트웨어를 배포하거나 명령을 실행합니다. 또한 Ansible은 원격 노드를 구성하거나 배포하는 데 사용할 수 있는 수백 개의 모듈을 포함하고 있습니다.
Ansible 작동 방식
이제 Ansible에 대한 기본적인 아이디어를 가지고 있습니다. 그러나 Ansible이 작동하려면 네 가지 구성 요소가 필요합니다.
- Ansible 제어 노드, 또는 Ansible 컨트롤러 호스트로도 알려진 것은 Ansible이 설치된 서버입니다. 이 노드는 모든 Ansible 즉석 명령 및 Ansible 플레이북을 실행하여 원격 노드의 구성 또는 소프트웨어를 배포하거나 관리합니다.
- Ansible 원격 노드, 또는 Ansible 관리 노드로도 알려진 것은 Ansible 즉석 명령 또는 Ansible 플레이북을 사용하여 응용 프로그램이나 구성을 배포하는 서버 또는 네트워크 장치입니다. 이러한 것들은 Ansible 호스트로도 알려져 있습니다.
- Ansible 인벤토리는 원격 호스트 또는 관리 노드의 목록을 포함하는 Ansible 컨트롤러 호스트 또는 컨트롤 노드의 파일입니다.
- Ansible 모듈, 또는 Ansible 코어 모듈로도 알려진 것은 명령줄이나 플레이북 작업에서 사용할 수 있는 코드 플러그인 또는 라이브러리 플러그인입니다. Ansible은 각 모듈을 일반적으로 원격 관리 노드에서 실행합니다.
Ansible를 사용하는 이유?
IT 업무를 하다 보면 반복되는 작업을 하게 될 가능성이 높습니다. 한 번 문제를 해결하고 나서 미래에 해결책을 자동화할 수 있다면 어떨까요? Ansible은 원격 노드에서 소프트웨어를 쉽고 효율적으로 관리하고 배포할 수 있는 구성 관리 도구입니다.
Ansible은 수백 개의 모듈을 갖고 있으며, 원격 서버를 관리하는 동안 사용할 수 있습니다. Ansible 모듈은 두 부분으로 나뉘어집니다:
- Ansible 코어 모듈(또는 ansible-core)은 우리가 이전에 언급한대로 Ansible의 주요 구성 요소이자 아키텍처입니다. 이 모듈들은 항상 Ansible과 함께 제공되며 핵심 Ansible 팀에 의해 소유되고 관리됩니다.
- Ansible 컬렉션은 Ansible을 위한 패키지 및 배포용 형식으로, 플레이북, 역할, 모듈 및 플러그인을 포장하고 배포할 수 있습니다. 일반적인 컬렉션은 관련 사용 사례를 해결합니다. 컬렉션을 만들고 Ansible Galaxy에 발행할 수 있습니다.
? Ansible Galaxy는 사용자가 역할을 공유하고 Ansible 모듈을 설치, 생성 및 관리할 수 있는 Galaxy 웹 사이트를 가리킵니다.
Ansible의 사용 사례
Ansible의 주요 사용 사례에 대해 묻는다면, Ansible이 할 수 있는 수백 가지 작업이 있기 때문에 전체 목록을 작성할 수 없습니다. 이는 원격 노드에서 서비스를 재시작하는 것부터 시작해서 Tomcat 애플리케이션을 배포하는 것까지 다양합니다.
Ansible이 유용하게 사용되는 몇 가지 사용 사례를 살펴보겠습니다:
- 하나의 명령으로 다른 시스템에서 작업 및 플레이북을 실행해야 할 경우, Ansible 변수를 사용할 수 있습니다.
- 여러 시스템에서 데이터를 검색해야한다면, Ansible 사실을 사용할 수 있습니다. Ansible 사실은 대상 노드에서 수집된 데이터를 컨트롤러 노드로 반환합니다.
- Ansible 보안 저장소는 비밀번호와 같은 민감한 데이터에 액세스하거나 안전한 암호로 애플리케이션을 배포하는 데 사용할 수 있습니다.
- Ansible은 외부 데이터 저장소에서 데이터를 검색하기 위해 데이터베이스 및 API에 액세스하는 lookups 기능을 제공합니다.
Ansible 설치 옵션
Ansible은 다중 운영 체제에서 지원되는 쉽게 설치할 수 있는 도구입니다. Ansible이 지원하는 운영 체제를 빠르게 살펴보겠습니다.
- Ansible를 RHEL, CentOS, Fedora, Ubuntu, Debian, Gentoo with portage, FreeBSD, macOS, Solaris, Arch, Linux, Slackware Linux, Clear Linux에 설치할 수 있습니다.
- 파이썬 Pip 패키지 설치 프로그램을 사용하여 Ansible을 설치할 수 있습니다.
Windows에서 Ansible을 실행할 수 있나요?
Windows에 Ansible을 설치할 수는 없지만, Windows 기반 운영 체제를 관리하기 위해 사용할 수 있습니다. 몇 가지 가능한 사용 사례는 다음과 같습니다:
- Windows 호스트에서 Ansible 팩트 수집
- MSI 설치와 제거
- Windows 기능 활성화/비활성화
- Windows 서비스 시작, 중지 및 관리
Ansible 구성 관리
첫 Ansible 명령을 실행하기 전에, Ansible 컨트롤러 호스트, Ansible 인벤토리, Ansible 플레이북 등을 구성하는 방법을 알아야 합니다.
Ansible 인벤토리 파일에는 Ansible 원격 노드 또는 그룹화된 원격 노드 목록이 포함되어 있으며, 이 정보는 배포 또는 자원 관리 시 Ansible이 사용합니다.
Ansible 인벤토리를 저장하는 방법에는 두 가지가 있습니다:
- 기본적으로, Ansible 인벤토리는 /etc/ansible/hosts 파일에 저장됩니다.
- 또한, 명령줄에서 -I <경로> 옵션을 지정함으로써 사용자 정의 경로를 사용할 수도 있습니다.
또한, Ansible 인벤토리를 구성하는 두 가지 방법이 있습니다:
- INI 형식: INI 파일은 서로 다른 그룹에 호스트를 할당하기 위해 대괄호 안의 그룹 이름으로 구성된 구성 파일입니다. 아래 예에서 server1.abc.com은 그룹이 할당되지 않았지만, server3.abc.com와 server4.abc.com은 Group1의 일부입니다.
server1.abc.com [Group1] server3.abc.com server4.abc.com
- YAML 형식: Ansible 인벤토리를 선언하는 또 다른 방법은 YAML을 사용하는 것입니다. YAML은 JSON의 슈퍼셋인 데이터 직렬화 언어입니다. 아래에 YAML 형식의 구문이 정의되어 있습니다.
INI 형식의 코드에 대한 위 설명과 유사하게, 여기서 두 대의 서버(server3.abc.com 그리고 server4.abc.com)가 그룹 Group1의 구성원입니다.
all: hosts: server1.abc.com children: Group1: hosts: server3.abc.com server4.abc.com
Ansible Ad hoc 명령어
Ansible 원격 노드에서 Linux 서비스를 다시 시작하거나 시작하는 것과 같은 빠른 작업을 수행해야 할 경우, Ansible Ad hoc 명령어가 여기 있습니다. Ad hoc 명령은 원격 노드에서 단일 명령을 빠르고 효율적으로 실행하는 방법입니다.
예를 들어, Ansible 임시 명령을 사용하여 Ansible 원격 노드 모두에 핑을 보내려면 아래의 명령을 실행해야 합니다. 여기서 ‘all’은 Ansible 인벤토리에 구성된 모든 호스트를 나타내며, -m은 핑 모듈과 함께 사용되는 플래그입니다.
ansible all -m ping

Ansible 플레이북이란?
여러 개의 Ansible 작업을 동시에 실행해야 할 때 Ansible 플레이북을 사용해야 합니다.
Ansible 플레이북은 복잡한 애플리케이션을 배포하고 재사용 가능하며 간단한 구성 관리를 제공합니다. 또한 다중 머신 배포를 지원하며 여러 번 여러 작업을 수행하는 데 사용할 수 있습니다.
Ansible 플레이북은 YAML 형식으로 작성되며 순차적으로 실행되는 여러 작업을 포함합니다. Ansible 플레이북의 예시는 아래와 같습니다.
이 예시에서 Ansible 플레이북에는 원격 노드에 Apache와 Java를 설치하는 두 개의 Ansible 작업(1과 2)이 포함되어 있습니다.
# Playbook apache.yml --- - name: Ansible Playbook Examples hosts: servers # Define all the hosts remote_user: ubuntu # Remote_user is ubuntu # Defining the Ansible tasks tasks: - name: Ansible Task 1 apt: name: httpd state: latest tasks: - name: Ansible Task 2 apt: name: open-jdk state: latest
Ansible Tower: 웹 기반 솔루션
이제 Ansible이 어떻게 작동하는지에 대해 좋은 아이디어를 갖고 있지만, 설치 또는 관리하지 않고 사용하고 싶다면 어떻게 해야 할까요?
Ansible은 Linux 기계에서 호스팅됩니다. 그러나 로컬로 Ansible을 관리하는 번거로움 없이 클라우드 버전을 사용하고 싶다면, 웹 기반 솔루션인 Ansible Tower를 사용하십시오. 클라우드 버전을 사용하는 경우에도 원격 기기를 구성하거나 관리하고 Ansible 명령 또는 Ansible Playbook을 실행하기 위해 모듈을 여전히 사용할 수 있습니다.
Ansible Tower는 모든 사용자의 액세스를 제어하고 SSH 자격 증명 및 Ansible 인벤토리를 관리하여 모든 작업을 기록하며 경량 디렉터리 액세스 프로토콜(LDAP)과 원활하게 통합되며 뛰어난 탐색 가능한 REST API를 갖추고 있습니다. Ansible Tower는 원격 노드에서 여러 작업을 실행해야 할 경우 서버와 인스턴스를 확장할 수 있는 기능을 가지고 있습니다.
결론
앤서블은 다양한 기능을 갖춘 무료 도구입니다. 본 안내서를 통해 이러한 기능이 풍부한 도구로 어떤 일이 가능한지에 대해 이해할 수 있을 것입니다! 구성 관리, 다양한 앤서블 모듈 사용, 즉석 명령 실행, 앤서블 플레이북 실행 및 다수의 소프트웨어 도구 배포 등을 통해 앤서블은 가장 널리 사용되는 자동화 도구 중 하나입니다.
이제 앤서블이 어떻게 동작하는지에 대해 잘 이해했으니, 어떤 것들을 배포할 계획이신가요?
관련 기사: