'hosts' 필드를 올바르게 구성하기
Ansible 인벤토리에서 호스트 정의
'hosts' 필드를 올바르게 구성하는 첫 번째 단계는 Ansible 인벤토리가 올바르게 설정되어 있는지 확인하는 것입니다. 인벤토리는 정적 파일 (예: inventory.yml) 또는 동적 인벤토리 소스 (예: 클라우드 공급업체 API, CMDB) 일 수 있습니다.
다음은 간단한 Ansible 인벤토리 파일의 예입니다.
all:
children:
webservers:
hosts:
web01.example.com:
web02.example.com:
databases:
hosts:
db01.example.com:
db02.example.com:
이 예제에서는 'webservers' 및 'databases' 그룹이 정의되어 있으며 각 그룹에는 두 개의 호스트가 포함되어 있습니다.
Ansible 플레이북에서 'hosts' 필드 사용
인벤토리가 설정되면 Ansible 플레이북에서 'hosts' 필드를 사용하여 원하는 호스트 또는 그룹을 대상으로 할 수 있습니다. 다음은 예입니다.
- hosts: webservers
tasks:
- name: Install Apache
apt:
name: apache2
state: present
- hosts: databases
tasks:
- name: Start MySQL service
service:
name: mysql
state: started
이 플레이북에서 첫 번째 플레이는 'webservers' 그룹을 대상으로 하고 두 번째 플레이는 'databases' 그룹을 대상으로 합니다.
고급 'hosts' 필드 구성
Ansible 의 'hosts' 필드는 다음과 같은 고급 구성을 지원합니다.
- 패턴: 특정 호스트 또는 그룹을 대상으로 하기 위해 패턴을 사용할 수 있습니다. 예를 들어,
*.example.com은 example.com 도메인의 모든 호스트에 일치합니다.
- 범위: 일련의 호스트를 대상으로 하기 위해 범위를 사용할 수 있습니다. 예를 들어,
host[01:10].example.com은 host01.example.com부터 host10.example.com까지의 호스트에 일치합니다.
- 변수:
{{ inventory_hostname }} 또는 {{ groups['webservers'] }}와 같은 Ansible 변수를 'hosts' 필드에 사용할 수 있습니다.
Ansible 플레이북에서 'hosts' 필드를 올바르게 구성하면 자동화 작업이 올바른 대상 시스템에서 실행되도록 하여 보다 안정적이고 효율적인 인프라 관리 프로세스를 보장할 수 있습니다.