Ansible Automation Platform 4.3中yum安装azure-cli失败排查
AAP 4.3中安装azure-cli失败的原因及解决
场景
把和Azure DevOps交互的Playbook从Ansible Tower迁移到Ansible Automation Platform 4.3,需要在RHEL目标节点(即控制器节点本身)安装azure-cli,但Playbook执行安装时一直失败。
试过的Playbook任务
- name: Install the application package (RedHat) # package: yum: name: "{{ azure_package_name }}" state: present
报错内容
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Could not import the dnf python module using /usr/bin/python (3.9.13 (main, Nov 9 2022, 13:16:24) [GCC 8.5.0 20210514 (Red Hat 8.5.0-15)]). Please install python3-dnf or python2-dnf package or ensure you have specified the correct ansible_python_interpreter. (attempted ['/usr/libexec/platform-python', '/usr/bin/python3', '/usr/bin/python2', '/usr/bin/python'])"}
已知信息和已做尝试
- AAP运行在Execution Environments(EE)里,用的是Automation Hub默认执行环境
- 目标节点是RHEL系统,也就是控制器自身
- 试过切换
package和yum模块,无效 - 直接在服务器上用
yum安装azure-cli成功,但Playbook仍报相同错误 - 不想修改EE,希望仅通过Playbook完成依赖安装或检测已安装状态
问题根源
默认EE中缺少python3-dnf依赖,且Playbook执行时使用的是EE内部的Python环境,而非目标节点(localhost)的系统Python。哪怕你已经在目标节点装好azure-cli,Ansible是通过EE环境调用yum模块的,EE里没有python3-dnf会导致模块加载失败,根本到不了检测安装状态的步骤,因此依旧报错。
解决方法
方法一:指定目标节点的Python解释器
在Playbook中给localhost指定RHEL系统默认的Python解释器/usr/libexec/platform-python,让yum模块使用目标节点的Python环境执行,绕开EE的环境限制:
- name: Install or verify azure-cli hosts: localhost vars: azure_package_name: azure-cli tasks: - name: Install azure-cli via yum yum: name: "{{ azure_package_name }}" state: present vars: ansible_python_interpreter: /usr/libexec/platform-python
方法二:直接检测已安装状态(若已手动安装)
如果已经在服务器上装好azure-cli,可以跳过yum模块,直接用命令检测安装状态:
- name: Verify azure-cli installation hosts: localhost tasks: - name: Check azure-cli version command: az --version register: az_version changed_when: false failed_when: az_version.rc != 0 - name: Show azure-cli info debug: msg: "azure-cli已安装,版本:{{ az_version.stdout_lines[0] }}"
内容的提问来源于stack exchange,提问作者IsThisYourNacho
相关产品推荐
相关产品推荐

