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
相关产品推荐
相关产品推荐

