ansible 收集事实无法检索 ansible_distribution_release ("module invocation has junk after the json data")

ansible gathering facts fails to retrieve ansible_distribution_release ("module invocation has junk after the json data")

运行:

ansible -m setup <hostname>

(主机名是 ubuntu 20.04 桌面)

returns 警告:

[WARNING]: Module invocation had junk after the JSON data: AttributeError("module 'platform' has no attribute 'dist'")

并且输出不显示任何字段“ansible_distribution_release”。

正如预期的那样,使用此变量的任务失败:

'ansible_distribution_release' is undefined

我可能遗漏了什么?

编辑:问题发生在 ansible 2.5.1 上,并由 运行 较新版本的 ansible 解决,请参阅已接受的答案。

我认为你是 运行 旧版本的 Ansible。

在 2018 年 12 月 10 日的提交 61b1da 中删除了 Ansible 中 platform.dist() 的使用。Python 本身在 [=21= 中放弃了对 platform.dist() 的支持] 3.8.

使用 Ansible 2.9.16,运行 setup 模块针对 Ubuntu 20.04 系统产生:

$ ansible all -i 192.168.122.212, -u root -m setup | grep ansible_distribution
        "ansible_distribution": "Ubuntu",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/os-release",
        "ansible_distribution_file_variety": "Debian",
        "ansible_distribution_major_version": "20",
        "ansible_distribution_release": "focal",
        "ansible_distribution_version": "20.04",