Ansible下载Node Exporter遇未知URL错误的解决方法求助
解决Ansible部署Node Exporter时的DNS解析失败问题
问题场景
使用Amazon Linux节点执行Ansible Playbook部署Node Exporter时,unarchive模块下载二进制包报错:
fatal: [ip]: FAILED! => {"changed": false, "msg": "Failure downloading https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz, Request failed: <urlopen error [Errno -2] Name or service not known>"}
已知前置条件:
ansible -m ping node-exporter返回正常连通- 节点可正常
ping www.google.com
排查方向
DNS解析机制差异:系统
ping使用的解析逻辑与Ansible模块依赖的Python urllib可能存在差异,先验证节点能否正确解析github.com:
在目标节点执行:nslookup github.com dig github.com若解析失败,检查节点
/etc/resolv.conf配置,或确认安全组是否允许DNS出站请求(UDP 53端口)。Gather Facts缺失影响:Playbook中
gather_facts: false会导致Ansible无法收集节点环境信息,可能影响模块加载正确的网络配置。远程节点权限与网络规则:
unarchive结合remote_src: yes时,是在远程节点直接下载文件,需确认节点安全组是否允许HTTPS出站流量(443端口)。
解决方案
方案1:拆分下载与解压步骤
改用get_url先将文件下载到临时目录,再执行解压,便于定位具体环节的问题:
修改roles/tasks/main.yml为:
- name: 创建node exporter临时目录 file: path: /tmp/node_exporter state: directory owner: ec2-user group: ec2-user - name: 下载node exporter二进制包 get_url: url: https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz dest: /tmp/node_exporter/node_exporter.tar.gz owner: ec2-user group: ec2-user mode: '0644' - name: 解压二进制包到/usr/local/bin unarchive: src: /tmp/node_exporter/node_exporter.tar.gz dest: /usr/local/bin/ remote_src: yes extra_opts: [--strip-components=1] owner: ec2-user group: ec2-user - name: 清理临时目录 file: path: /tmp/node_exporter state: absent
方案2:启用事实收集并指定Python解释器
修改node-exporter.yml,开启事实收集并指定Python3(避免旧版本urllib的解析兼容性问题):
--- - hosts: node-exporter become: false gather_facts: yes vars: ansible_python_interpreter: /usr/bin/python3 roles: - roles
方案3:手动验证节点网络连通性
在目标节点直接执行下载命令,确认网络可用性:
curl -O https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
若下载失败,进一步排查:
- 安全组出站规则是否允许HTTPS(443)流量
- 节点是否需要代理,若需代理,在Playbook中添加环境变量配置:
environment: http_proxy: http://your-proxy:port https_proxy: http://your-proxy:port
内容的提问来源于stack exchange,提问作者cloud-engineer
相关产品推荐
相关产品推荐

