自动安装后运行命令

自动安装后运行命令

我正在通过 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或中没有文件,重启后日志中也没有消息。我尝试过,之前也尝试过,也有尝试过。/etcwrite_files/target

安装后,在目标上写入任意文件或运行任意命令的预期方法是什么?

答案1

我不确定这是否是官方方法,但现在将文件写入目标系统的方法如下:

 late-commands:
    - echo test5 > /target/etc/test5.conf

我之前尝试过,但没有成功,但我只能假设是一些我忽略的其他错误导致测试失败。

curtin in-target --target=/target -- cmd作为后期命令的一部分使用来运行命令。

我还没有设法让其他任何方法(例如cloud-init-perwrite_files起作用。不过,这解决了我的迫切需要。

相关内容