使用Dell OpenManage Ansible模块连接iDRAC时setup模块执行失败求助
问题解决:Dell OpenManage Ansible模块连接iDRAC7时setup模块执行失败
问题分析
你遇到的ansible.legacy.setup模块执行失败,核心原因是错误地让Ansible尝试通过SSH连接iDRAC设备。iDRAC的SSH环境不支持标准Python解释器的执行逻辑,因此返回命令语法错误。
你的Playbook已经设置了connection: local和gather_facts: False,但命令行参数-i iDRAC_IP, -u USER --ask-pass强制Ansible将iDRAC当作需要SSH登录的远程主机处理,导致Ansible自动触发setup模块收集远程主机信息,而这在iDRAC环境下无法正常执行。另外,become: yes完全没必要——模块是在本地控制节点执行,不需要提权到iDRAC权限(模块通过iDRAC账号密码验证API权限)。
解决方案
1. 修正Playbook
移除不必要的become: yes,明确模块本地执行的目标主机:
--- - hosts: localhost gather_facts: False tasks: - name: Get hardware inventory dellemc_get_system_inventory: idrac_ip: "你的iDRAC IP" idrac_user: "你的iDRAC用户名" idrac_password: "你的iDRAC密码" validate_certs: false
若要保留
PowerEdge组,可在inventory文件中将该组指向localhost。
2. 修正执行命令
无需指定iDRAC的SSH登录参数,直接运行:
ansible-playbook playbook.yml -vvv
如果使用inventory文件,可创建inventory.ini:
[PowerEdge] localhost
再执行:
ansible-playbook playbook.yml -i inventory.ini -vvv
3. 额外检查项
- 确保控制节点已安装Dell OpenManage Ansible模块:
pip install dellemc-openmanage - 确认iDRAC7的REST API服务已启用(在iDRAC Web控制台的
Services->Remote Access中开启)。
内容的提问来源于stack exchange,提问作者user4476009
相关产品推荐
相关产品推荐

