반응형
Ansible lookup
Ansible lookup 이란?
Ansible은 다양한 Plugin을 제공하고 있음.
plugin 종류는 아래와 같음.
- Action plugins
- Become plugins
- Cache plugins
- Callback plugins
- Cliconf plugins
- Connection plugins
- Docs fragments
- Filter plugins
- Httpapi plugins
- Inventory plugins
- Lookup plugins
- Modules
- Module utilities
- Netconf plugins
- Shell plugins
- Strategy plugins
- Terminal plugins
- Test plugins
- Vars plugins
이 중 lookup에 대해 알아보겠음.
공식 사이트에서 lookup plugin은 Jinja2 템플릿 언어에 대한 Ansible 전용 확장 기능이라고 소개하고 있음.
lookup plugin을 사용하여 ansible playbook의
외부 소스(files, databases, key/value stores, APIs, and other services)의 데이터에 액세스할 수 있음.
Jinja2란?
Jinja2는 python에서 가장 많이 사용되는 Template engine 중 하나로 주로 python Flask에서 사용됨.
Jinja 문법은 간단히 아래와 같음.
{{ ... }}
|
변수나 표현식
|
{% ... %}
|
if나 for같은 제어문
|
{# ... #}
|
주석
|
List of lookup plugin
lookup을 통해 알아올 수 있는 외부 데이터 list는 아래와 같음.
aws, azure, gcp, kubernetes, hashicorp_vault 등 다양한 외부 소스에 대한 정보를
lookup을 통해 알아올 수 있음.
[명령어]
ansible-doc -t lookup -l
lookup plugin 사용법
lookup plugin list 중 'file', 'varnames'를 사용해보겠음.
[lookuptest.yaml 예제]
---
- hosts: all
remote_user: root
become: true
vars:
file_contents: "{{ lookup('file', '/root/ansible_test/temp/test.sh') }}"
tasks:
- name: list variables that start with qz_
debug: msg="{{ lookup('varnames', '^qz_.+') }}"
vars:
qz_1: test1
qz_2: test2
qa_1: test3
qz_: test4
- name: lookup file test
debug: msg={{ file_contents }}
|
'vars:' 에서 변수 선언 시 lookup file를 사용함
file는 설정되어있는 경로의 파일 내용을 가져옴.
varnames의 경우 해당 ansible에 선언되어있는 변수 목록을 가져옴.
정규식으로 변수항목을 가져올 수 있음.
[참고]
사용한 test.sh 파일 상태
[결과]
lookup file의 경우 test.sh 파일 내용이 한줄로 출력되는 것을 확인할 수 있음.
lookup varnames의 경우 선언했던 변수 중에 설정한 정규표현식에 해당하는 변수만 출력되는 것을 확인할 수 있음.
참고
반응형
'클라우드 > Ansible' 카테고리의 다른 글
Ansible file 전달 (copy 모듈) (0) | 2022.01.27 |
---|---|
Ansible directory 생성 (file 모듈) (0) | 2022.01.27 |
05. Ansible Role (0) | 2021.12.13 |
04. Ansible Playbook (0) | 2021.12.13 |
03. Ansible inventory (0) | 2021.12.13 |