NetworkingAnsible 事實未定義:
Ansible 事實未定義:ansible_all_ipv4_addresses
未定義
該任務包括一個帶有未定義變數的選項。錯誤是:
ansible_all_ipv4_addresses
未定義。如果我通過 ipv4 連接,為什麼會出現此錯誤?我試圖像這樣丟棄這個,
"{{ ansible_all_ipv4_addresses[0] }}"
我可以驗證它是否有效,
$ ansible -u centos -m setup 10.1.38.15 | grep ansible_all_ipv4_addresses -A2 -B1 "ansible_facts": { "ansible_all_ipv4_addresses": [ "172.16.0.13" ],
但是與上面的非常相似,
$ ansible -u centos -m debug -a "msg='{{ansible_all_ipv4_addresses}}'" 10.1.38.15 10.1.38.15 | FAILED! => { "msg": "The task includes an option with an undefined variable. The error was: 'ansible_all_ipv4_addresses' is undefined" }
對我來說,問題是我的劇本有
gather_facts: false
設置在我的劇本的頂部。至於為什麼事實的使用不適用於調試模組,請參閱這個問題
對我來說,docker 中的 Ubuntu 預設沒有 iproute2 包。
我看到您正在使用 CentOS,但它是 Google 中的第一個連結,所以我認為值得一提的是這個執行緒,我實際上在其中找到了答案。
這是我添加到我的劇本中的一個塊,以防有人發現它有用:
--- - name: Install iproute2 on ubuntu to gather facts properly block: - name: install iproute apt: name: iproute2 state: present - name: Recollect facts ansible.builtin.setup: gather_subset: - all - debug: msg="{{ hostvars[inventory_hostname]['ansible_all_ipv4_addresses'] }}" when: ansible_distribution == "Ubuntu"