Packer和安装后脚本

时间:2014-04-25 11:11:45

标签: bash shell packer

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

2 个答案:

答案 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####

说明:

    每次系统启动后都会执行
  1. rc.local脚本。因此,添加代码将导致它在启动后执行。
  2. 首次使用脚本执行时,使用sed删除自定义代码。因此,代码只执行一次。
  3. 其他方法:

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

     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