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

Flatcar Linux中能否通过ignition.json下载远程目录?

Flatcar Linux Ignition 远程目录下载问题解决

Ignition 的 storage.files 配置仅支持处理单个文件,无法直接下载远程目录。你当前的配置中,将路径设为 /opt/bin/mydata 并指向远程目录源,Ignition 无法解析目录内容,因此只会创建空的 mydata 目录。

以下是两种可行的解决方法:

方法1:打包目录为压缩包后下载解压

将远程目录打包成 tar.gz 压缩包,通过 Ignition 下载该压缩包,再借助 systemd 服务在系统首次启动时解压到目标路径。

示例 Ignition 配置片段

"storage": {
  "files": [
    // 下载压缩包到本地
    {
      "filesystem": "root",
      "path": "/opt/bin/mydata.tar.gz",
      "mode": 420,
      "contents": {
        "source": "http://192.168.56.114/ks/mydata.tar.gz",
        "verification": {}
      }
    },
    // 创建解压用的 systemd 服务(需将下方 service 内容转成 base64 编码填入)
    {
      "filesystem": "root",
      "path": "/etc/systemd/system/extract-mydata.service",
      "mode": 420,
      "contents": {
        "source": "data:text/plain;base64,W1VuaXRdCkRlc2NyaXB0aW9uPUV4dHJhY3QgbXlkYXRhIGRpcmVjdG9yeQpBZnRlci1uZXR3b3JrLnRhcmdldAo=[完整base64编码内容]"
      }
    }
  ],
  "systemd": {
    "units": [
      {
        "name": "extract-mydata.service",
        "enabled": true
      }
    ]
  }
}

extract-mydata.service 内容

[Unit]
Description=Extract mydata directory
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/tar -xzf /opt/bin/mydata.tar.gz -C /opt/bin/
ExecStartPost=/bin/rm /opt/bin/mydata.tar.gz  # 解压完成后删除压缩包
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

方法2:用 systemd 服务执行递归下载

通过 systemd 的一次性服务,在系统首次启动时调用 wget 递归拉取远程目录内容。

示例 Ignition 配置片段

"storage": {
  "files": [
    // 创建下载用的 systemd 服务(需将下方 service 内容转成 base64 编码填入)
    {
      "filesystem": "root",
      "path": "/etc/systemd/system/download-mydata.service",
      "mode": 420,
      "contents": {
        "source": "data:text/plain;base64,W1VuaXRdCkRlc2NyaXB0aW9uPR下载mydata目录\nAfter=network.target\n\n[Service]\nType=oneshot\nExecStart=/usr/bin/wget -r -np -nH --cut-dirs=2 -P /opt/bin/ http://192.168.56.114/ks/mydata/\nRemainAfterExit=true\n\n[Install]\nWantedBy=multi-user.target"
      }
    }
  ],
  "systemd": {
    "units": [
      {
        "name": "download-mydata.service",
        "enabled": true
      }
    ]
  }
}

wget 参数说明

  • -r:递归下载目录下所有内容
  • -np:不访问父目录,避免下载无关文件
  • -nH:不创建远程主机名命名的目录
  • --cut-dirs=2:去掉 URL 里的前两层路径(ks/mydata),直接把内容放到 /opt/bin 下

注意点

  • 确保远程服务器允许目录列表访问,否则 wget 递归下载会失败;
  • 如果想用 git clone 替代 wget,需先确认系统已安装 git(Flatcar 默认未预装,需额外部署)。

内容的提问来源于stack exchange,提问作者jnan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:15:22