You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

排查方向

  1. DNS解析机制差异:系统ping使用的解析逻辑与Ansible模块依赖的Python urllib可能存在差异,先验证节点能否正确解析github.com:
    在目标节点执行:

    nslookup github.com
    dig github.com
    

    若解析失败,检查节点/etc/resolv.conf配置,或确认安全组是否允许DNS出站请求(UDP 53端口)。

  2. Gather Facts缺失影响:Playbook中gather_facts: false会导致Ansible无法收集节点环境信息,可能影响模块加载正确的网络配置。

  3. 远程节点权限与网络规则: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:10:39