我正在通过 UEFI HTTP 启动、subiquity 和 NoCloud 数据源安装 Ubuntu 20.04 服务器。实际安装成功,我让基本操作系统运行起来。
我还需要在安装完成后或安装程序重新启动后首次启动时配置一些内容。
我尝试过各种各样的事情user-data
:
write_files:
- path: /target/etc/example.conf
permissions: 644
content: |
example content
- path: /target/var/lib/cloud/scripts/per-once/test.sh
permissions: 755
content: |
#!/bin/sh
date > /tmp/i_ran
date
echo test1
runcmd:
- echo test2 > /tmp/test2
- cloud-init-per once testing echo test3
- [ cloud-init-per, once, testing2, touch, /tmp/test4 ]
- [ curtin, in-target, --target=/target, --, cloud-init-per, once, testing3, touch, /tmp/testing5 ]
late-commands:
- echo test5 > /target/etc/test5.conf
- curtin in-target --target=/target -- cloud-init-per once testing9 touch /tmp/testing9
命令运行(如 subiquity 调试日志中所示),但似乎没有在已安装的系统上留下任何痕迹。例如,我发现/tmp
或中没有文件,重启后日志中也没有消息。我尝试过,之前也尝试过,也有尝试过。/etc
write_files
/target
安装后,在目标上写入任意文件或运行任意命令的预期方法是什么?
答案1
我不确定这是否是官方方法,但现在将文件写入目标系统的方法如下:
late-commands:
- echo test5 > /target/etc/test5.conf
我之前尝试过,但没有成功,但我只能假设是一些我忽略的其他错误导致测试失败。
curtin in-target --target=/target -- cmd
作为后期命令的一部分使用来运行命令。
我还没有设法让其他任何方法(例如cloud-init-per
)write_files
起作用。不过,这解决了我的迫切需要。