이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/Ansible

06. Ansible lookup

이쿠우우 2022. 1. 9. 11:16
반응형

 

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