[Ansible] #5.2 조회

[Ansible] #5.2 조회

Ansible조회 에 대해서 알아보자.


1. 조회


조회(lookup) 플러그인은 파일, 인벤토리, 키/값 저장소, API 등 외부 소스에서 데이터를 검색해 변수로 가져올 수 있다.

조회 플러그인의 목록은 다음 명령으로 확인할 수 있다.

ansible-doc -t lookup -l

2. 파일 조회


다음은 file 조회 플러그인을 이용해 파일의 내용을 변수로 가져오는 예제다.

- hosts: mgmt
  vars: 
    auth_key: "{{ lookup('file', '/home/devops/.ssh/id_rsa.pub') }}"

  tasks:
  - name: set authorized keys
    authorized_key:
      user: devops
      state: present
      key: "{{ auth_key }}"

auth_key 의 값을 보면 lookup 플러그인을 사용하고 있는 것을 볼 수 있다.
함수를 사용하는 것이라고 봐도 된다.
그리고 첫 번째 파라미터를 'file' 로 지정하면 두 번째 파라미터로 오는 파일의 내용을 출력한다.

이후 set authorized keys 태스크에서는 key 값으로 해당 파일의 내용을 불러와 사용할 수 있다.

3. URL 조회


다음은 url 조회 플러그인을 이용해 정보를 변수로 가져오는 예제다.

- name: display ip ranges
  debug:
    msg: "{{ lookup('url', https://ip-ranges.amazonaws.com/ip-ranges.json', split_lines=False) }}"

URL 조회 테스트


02_vars 폴더에서 시작한다.

mkdir lookup
cd lookup
vi url.yaml
- hosts: mgmt
  vars:
    ip_range: "{{ lookup('url', 'https://ip-ranges.amazonaws.com/ip-ranges.json') }}"
  tasks:
  - debug:
      msg: "{{ ip_range }}"
ansible-playbook url.yaml

실행하면 값이 쏟아져 나오므로, 결과 사진은 생략한다.

4. DIG 조회, 테스트


vi dig.yaml
# Library: sudo apt install python3-dnspython

- hosts: mgmt
  vars:
    google_ip: "{{ lookup('dig', 'www.google.com', qtype='A' ) }}"

  tasks:
  - debug:
      msg: "{{ google_ip }}"

digDNS 를 쿼리하는 것이다.

q타입은 A 레코드로, 구글에 대한 A 레코드를 DNS 서버에 질의할 것이다.
이 때 주의할 점으로 dig lookup을 사용하기 위해서는 dnspython 이라는 라이브러리가 필요하므로, 해당 라이브러리를 설치해줘야 한다.

sudo apt-cache search dnspython

1

위 명령어로 dnspython 의 패키지명을 확인할 수 있다.

sudo apt install python3-dnspython
ansible-playbook dig.yaml

2

msg 로 구글의 주소는 172.217.27.36 임을 확인할 수 있다.


© 2022. All rights reserved.