룩업
룩업 (Lookups)
이 페이지에서는 Ansible의 룩업 플러그인(lookup plugin)을 다뤄요. 룩업은 파일, 데이터베이스, 키-값 저장소, API 같은 외부 소스에서 데이터를 가져오는 기능이에요. 모든 템플릿 기능이 그렇듯 룩업도 Ansible 제어 노드(control machine)에서 실행되고 평가돼요. Ansible은 룩업 플러그인이 돌려준 데이터를 표준 템플릿 시스템으로 사용할 수 있게 해 줘요.
출처: 문서
본문
룩업 플러그인은 파일, 데이터베이스, 키-값 저장소, API, 그 밖의 서비스 같은 외부 소스에서 데이터를 가져와요. 모든 템플릿 기능이 그렇듯이 룩업도 Ansible 제어 노드(control machine)에서 실행되고 평가돼요. Ansible은 룩업 플러그인이 돌려준 데이터를 표준 템플릿 시스템으로 사용할 수 있게 해 줘요. Ansible 2.5 이전에는 룩업이 주로 with_<lookup> 구조로 반복을 돌릴 때 간접적으로 쓰였어요. Ansible 2.5부터는 룩업을 loop 키워드에 넣는 Jinja2 표현식의 일부로 더 명시적으로 사용해요.
lookup 함수
lookup 함수를 쓰면 변수를 동적으로 채울 수 있어요. Ansible은 작업(이나 템플릿)에서 그 값이 실행될 때마다 룩업을 평가해요.
vars:
motd_value: "{{ lookup('file', '/etc/motd') }}"
tasks:
- debug:
msg: "motd value is {{ motd_value }}"
lookup 함수의 첫 번째 인자는 필수이며 룩업 플러그인의 이름을 지정해요. 룩업 플러그인이 컬렉션(collection) 안에 있다면 정규화된 이름(FQCN)을 제공해야 해요. collections 키워드는 룩업 플러그인에는 적용되지 않기 때문이에요.
lookup 함수는 선택적인 boolean 키워드 wantlist도 받는데, 기본값은 False예요. True로 설정하면 룩업 결과가 리스트임을 보장해요.
플러그인별 인자와 키워드를 보려면 해당 룩업 플러그인의 문서를 참고하세요.
query/q 함수
이 함수는 lookup(..., wantlist=True)의 축약형이에요. 아래 두 코드는 서로 동일해요:
block:
- debug:
msg: "{{ item }}"
loop: "{{ lookup('ns.col.lookup_items', wantlist=True) }}"
- debug:
msg: "{{ item }}"
loop: "{{ q('ns.col.lookup_items') }}"
자세한 내용과 ansible-core에 들어 있는 룩업 플러그인 목록은 플러그인 다루기를 참고하세요. 컬렉션에서도 룩업 플러그인을 찾을 수 있어요. 제어 노드에 설치된 룩업 플러그인 목록은 ansible-doc -l -t lookup 명령어로 확인할 수 있어요.
더 알아보기 (Learn more)
- 플러그인 다루기 (Working with plugins) — 룩업 플러그인을 비롯한 다양한 플러그인 종류 살펴보기
- 루프 (Loops) — 룩업 결과를 반복 처리하는 방법