Ansible: Host Pattern 종류

0. 들어가며

Ansible은 구성 관리 도구로서 여러 대상에 대한 작업을 쉽고 간편하게 수행할 수 있도록 도와주는 오픈소스 소프트웨어입니다. Ansible을 사용하기 위해서는 대상 서버 관리를 위한 인벤토리 파일에 대한 이해가 중요합니다. 인벤토리는 Ansible이 대상 서버를 찾고 작업을 수행하기 위해 필요한 정보를 담은 파일입니다. 해당 인벤토리 파일에서 Ansible에서는 각 호스트를 선택할 수 있는 여러 가지 패턴(Pattern)을 제공합니다.

1. Ansible Host Pattern 종류 요약

Pattern 유형예제 명령어설명
명시적 호스트(Explicit Hosts)ansible <hostname> -m <module> -a <arguments>명시적으로 호스트를 나열하여 작업합니다.
그룹(Group)ansible <group_name> -m <module> -a <arguments>hosts 파일에서 그룹 섹션에 정의된 모든 호스트를 대상으로 작업합니다.
키-밸류(Key-Value)ansible “<key>=<value>” -m <module> -a <arguments>사용자 정의 변수에 따라 호스트를 선택합니다. 예를 들어 호스트의 운영 체제인 RedHat에 대한 모든 호스트를 선택
범위(Range)ansible <start_ip_address>,<end_ip_address> -m <module> …IP 주소의 범위에 해당하는 특정 호스트를 대상으로 작업합니다.
선택자(Selectors)ansible “selector_string” -m <module> -a <arguments>인벤토리 파일에서 특정 패턴에 일치하는 호스트를 선택
복합(Combo)ansible “<group>:<selector>” -m <module> -a <arguments>여러 그룹과 선택자를 조합하여 다양한 패턴을 작성합니다.

2. 명시적 호스트(Explicit Hosts)

명시적 호스트 패턴은 대상 호스트의 이름을 직접 명시하는 방식으로 작업을 수행합니다. 아래는 명시적 호스트 패턴의 예시 명령어입니다.

ansible <hostname> -m <module> -a <argument>

이 패턴은 작업을 실행할 특정 호스트를 지정할 때 유용합니다. 그러나 대상 호스트가 많은 경우 일일이 지정하는 것은 비효율적이므로 다른 패턴을 사용하는 것이 좋습니다.

3. 그룹(Group)

그룹 패턴은 hosts 파일에서 그룹 섹션에 지정된 모든 호스트를 대상으로 작업을 수행합니다. 아래는 그룹 패턴의 예시 명령어입니다.

ansible <group_name> -m <module> -a <argument>

그룹 패턴은 대규모 환경에서 많은 대상 호스트를 처리할 때 유용합니다. 하나의 그룹으로 업데이트를 쉽게 적용할 수 있으며, 매개 변수를 그룹에 적용하여 공통 작업을 빠르게 수행할 수 있습니다.

4. 키-밸류(Key-Value)

키-밸류 패턴은 사용자 정의 변수를 이용하여 조건부 선택에 대한 유연성을 제공하는 패턴입니다. 아래는 키-밸류 패턴의 예시 명령어입니다.

ansible "<key>=<value>" -m <module> -a <argument>

사용자 정의 변수를 이용하여 해당 변수의 값을 가지는 대상 호스트를 선택합니다.

5. 범위(Range)

범위 패턴은 IP 주소 범위를 이용하여 대상 호스트를 선택하는 방법입니다. 아래는 범위 패턴의 예시 명령어입니다.

ansible <start_ip_address>,<end_ip_address> -m <module> ...

IP 주소 범위에 해당하는 모든 대상 호스트를 선택하여 작업을 수행합니다.

6. 선택자(Selectors)

선택자 패턴은 인벤토리 파일에서 특정 패턴에 일치하는 호스트를 선택하는 기능입니다. 아래는 선택자 패턴의 예시 명령어입니다.

ansible "<selector_string>" -m <module> -a <argument>

인벤토리 파일에서 특정 패턴에 일치하는 호스트를 선택하여 작업을 수행합니다.

7. 복합(Combo)

복합 패턴은 여러 그룹과 선택자를 조합하여 다양한 패턴으로 작업을 수행하는 기능입니다. 아래는 복합 패턴의 예시 명령어입니다.

$ ansible "<group>:<selector>" -m <module> -a <argument>

8. 결론

Ansible은 간결하고 유연하지만 사용자가 인벤토리 키-밸류 파일을 사용하여 클러스터 구성을 더욱 쉽게 추가하도록 관리할 수 있습니다. 다양한 패턴에 대한 이해와 이러한 패턴이 사용되는 시나리오에 대한 이해가 필요한데 이러한 이해를 바탕으로 적절한 인벤토리 패턴 선택을 할 수 있습니다.