11장. 호스트, 실행 및 핸들러 사용자 지정하기
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
때때로 Ansible의 기본 동작이 사용 사례에 적합하지 않을 수 있습니다. 이 장에서는 실행할 호스트와 작업 및 핸들러 실행 방법을 제어하여 사용자 지정 기능을 제공하는 Ansible 기능에 대해 설명합니다.
호스트 지정 패턴
지금까지 플레이의 host 매개 변수는 다음과 같이 단일 호스트 또는 그룹을 지정했습니다:
hosts: web
하지만 단일 호스트 또는 그룹을 지정하는 대신 패턴을 지정할 수도 있습니다. 이미 알려진 모든 호스트에 대해 플레이를 실행하는 all 패턴을 보셨을 것입니다:
hosts: all
콜론을 사용하여 두 개의 그룹을 결합하여 지정할 수 있으며, 이 예에서는 모든 개발 및 스테이징 머신을 지정합니다:
hosts: dev:staging
콜론과 앰퍼샌드를 사용하여 교집합을 지정할 수 있습니다. 예를 들어 스테이징 환경의 모든 데이터베이스 서버를 지정하려면 이렇게 할 수 있습니다:
hosts: staging:&database
표 11-1은 Ansible에서 지원하는 패턴을 보여줍니다. 정규식 패턴은 항상 물결표로 시작한다는 점에 유의하세요.
| 액션 | 사용 예 |
|---|---|
| 모든 호스트 | all |
| 모든 호스트 | * |
| Union | dev:staging |
| 교차로 | staging:&database |
| 제외 | dev:!queue |
| 와일드카드 | *.example.com |
| 번호가 부여된 서버의 범위 | web[5:10] |
| 정규식 | ~web\d+\.example\.(com|org) |
Ansible은 다양한 패턴 조합을 지원합니다:
hosts: dev:staging:&database:!queue
실행할 호스트 제한
제한은 모든 잠재적 호스트의 하위 집합을 대상으로 플레이북을 지정합니다. 예 11-1에 표시된 것처럼 -l 또는 --limit 플래그를 원하는 패턴과 함께 사용합니다.
예 11-1. 실행할 호스트 제한
$ ansible-playbook -l <pattern> playbook.yml $ ansible-playbook --limit <pattern> playbook.yml
패턴 구문을 사용하여 임의의 호스트 조합을 지정할 수 있습니다. 예를 들어
$ ansible-playbook -l 'staging:&database' playbook.yml
제어 머신에서 작업 실행
원격 호스트가 아닌 제어 머신에서 특정 작업을 실행하려는 경우가 있습니다. 이를 지원하기 위해 Ansible은 작업에 대해 delegate_to: localhost 절을 제공합니다.
대부분의 조직에서는 서버에서 직접 인터넷에 액세스할 수 없지만, 프록시를 사용하여 노트북에서 다운로드할 수 있을 수도 있습니다. 그렇다면 노트북으로 다운로드를 위임할 수 있습니다:
- name: Download goss binary delegate_to: ...