lookup - dig

lookup 是很方便的查詢函式,第一個參數是 ‘dig’ 的時候,會拿第二個參數來做 DNS 查詢。

例如下面的 playbook

- debug:
    msg: "ansible.cloudns.pro IP Address: {{ lookup('dig', 'ansible.cloudns.pro') }}"

就等同於 dig ansible.cloudns.pro

在使用 lookup(‘dig’, ‘<your_domain>’) 之前,得先安裝套件:

  • Ubuntu: python-dnspython 或 python3-dnspython
  • Red Hat / CentOS: python-dns 或 python3-dns

除了上面提到的以域名來找 IP 之外,也可以指定 DNS record type 來找。 例如,想找 example.org 的 MX record (SMTP伺服器位址),就可以帶入 qtype=MX

# dig example.org MX
- name: "The MX record for example.org."
  debug:
    msg: "{{ lookup('dig', 'example.org.', 'qtype=MX') }}"

要注意的是,lookup 是在執行 ansible-playbook 的也就是控制端主機上執行,而非被控端。

參考資料: