[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 }}"
dig
은 DNS
를 쿼리하는 것이다.
q타입은 A 레코드로, 구글에 대한 A 레코드를 DNS 서버에 질의할 것이다.
이 때 주의할 점으로 dig lookup
을 사용하기 위해서는 dnspython
이라는 라이브러리가 필요하므로, 해당 라이브러리를 설치해줘야 한다.
sudo apt-cache search dnspython
위 명령어로 dnspython
의 패키지명을 확인할 수 있다.
sudo apt install python3-dnspython
ansible-playbook dig.yaml
msg
로 구글의 주소는 172.217.27.36
임을 확인할 수 있다.