打包程序和安装后脚本

Sim*_*ite 4 bash shell packer

我开始使用 Packer,我有一个问题。是否有任何解决方案可以添加一个 bash 脚本,该脚本将自动启动并且仅在从映像部署 VM 后启动一次?

ani*_*ane 5

/etc/rc.local在 linux VM 的映像中添加以下代码:

####Marker_start####
sed -i '/####Marker_start####/,/####Marker_end####/d' /etc/rc.local
#Your custom code here
####Marker_end####
Run Code Online (Sandbox Code Playgroud)

解释:

  1. rc.local 脚本在每次系统启动后执行。因此,在那里添加代码将导致它在启动后执行。
  2. 第一次执行脚本时,使用 sed 删除自定义代码。因此,代码只执行一次。

其他方法:

创建一个包含您的自定义代码的脚本并将以下代码附加到它。

 chmod 644 "$0"
Run Code Online (Sandbox Code Playgroud)

并创建一个符号链接

ln -s /path/to/your-script.sh /etc/rc5.d/S99my-custom-script.sh
Run Code Online (Sandbox Code Playgroud)

(假设您的默认运行级别为 5。根据 VM 发行版的需要更改它 - 例如 ubuntu 已启用/etc/rc2.d
说明:当进入运行级别 5 时,将自动执行
指定/etc/rc5.d/S*的脚本,参数= start。第一次执行时,将脚本设为不可执行,以便它只执行一次。