我开始使用Packer,我有一个问题。是否有任何解决方案可以添加一个bash脚本,该脚本将自动启动,并且只能在从映像部署VM后才启动一次?
答案 0 :(得分:4)
在linux VM映像的/etc/rc.local
中添加以下代码:
####Marker_start####
sed -i '/####Marker_start####/,/####Marker_end####/d' /etc/rc.local
#Your custom code here
####Marker_end####
说明:
其他方法:
创建一个包含自定义代码的脚本。将代码附加到代码下面。
chmod 644 "$0"
&安培;创建符号链接
ln -s /path/to/your-script.sh /etc/rc5.d/S99my-custom-script.sh
(假设您的默认运行级别是5.根据您的VM发行版的要求更改它 - 例如ubuntu在/etc/rc2.d
上有它)
说明:
名为/etc/rc5.d/S*
的脚本在进入运行级别5时自动执行,参数= start
。
首次执行时,将脚本设置为不可执行,以便它只执行一次。
答案 1 :(得分:0)
我在这里问了同样的问题,但是对于一个更具体的案例。我正在根据aws linux
图像为AWS构建自定义AMI。
如果您遇到这种情况,可以将脚本添加到/var/lib/cloud/per-instance
。这将为每个实例运行一次脚本。如果您需要按启动运行它,可以将其添加到/var/lib/cloud/per-boot
。
确保首先将文件夹复制到可以写入/home/ec2-user/
的位置,然后将脚本移动到该位置。
有关此案例的更具体问题,请参阅AWS user_data with Packer。