ジョブに定義されていない変数を含むオプションが含まれています。エラーは定義されてい
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"
}
答え1
私にとって問題は私のスクリプトです
gather_facts: false
私のスクリプトの上部に設定します。デバッグモジュールで実際に使用が機能しない理由は、この質問を参照してください。
答え2
私にとって、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"