运行EC2动态库存的Ansible playbook时出现Python警告如何解决
解决方案
故障原因说明
你遇到的警告是Ansible 2.8+版本默认开启Python解释器自动发现导致的:即便全局配置了Python解释器路径,自动发现逻辑仍会检测到/usr/bin/python属于可变更的软链接路径,因此抛出后续可能存在路径变动的警告。之前的配置未生效是因为ansible_python_interpreter属于主机级变量,在全局配置文件中需使用interpreter_python参数才会覆盖自动发现逻辑。
方法1:动态库存组变量配置(推荐)
该方案不会影响Ubuntu主机的正常配置,仅针对Amazon Linux2实例生效:
- 给所有Amazon Linux2的EC2实例添加自定义标签,例如键为
os_type、值为amazon_linux_2,AWS动态库存会自动将所有带该标签的实例归到tag_os_type_amazon_linux_2的主机组中 - 在Ansible工作目录下创建
group_vars目录(如果不存在) - 在
group_vars目录下新建tag_os_type_amazon_linux_2.yml文件,写入以下配置:
ansible_python_interpreter: /usr/bin/python3
提示:可在Amazon Linux2实例上执行
which python3确认实际的Python3路径,替换上述配置中的路径即可
方法2:全局配置固定解释器
如果所有主机的Python路径一致,可直接修改全局配置关闭警告,编辑/etc/ansible/ansible.cfg的[defaults]段,将原有配置替换为:
interpreter_python = /usr/bin/python3
如果你已经将所有主机的
/usr/bin/python软链接指向Python3,也可以配置为interpreter_python = /usr/bin/python,该参数会直接覆盖自动发现逻辑,不会再触发警告
方法3:Playbook内指定变量
如果仅需要单个Playbook生效,可直接在Playbook的变量段针对对应主机组配置:
- name: 主机连通性测试 hosts: all vars: tag_os_type_amazon_linux_2: ansible_python_interpreter: /usr/bin/python3 tasks: - name: 执行ping测试 ansible.builtin.ping:
内容的提问来源于stack exchange,提问作者M.Ford
相关产品推荐
相关产品推荐

