bash - Packer 和安装后脚本

标签 bash shell packer

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

最佳答案

在linux虚拟机镜像的/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 删除自定义代码。因此,代码只执行一次。

其他方法:

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

 chmod 644 "$0"

& 创建符号链接(symbolic link)

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。 在第一次执行时,将脚本设置为不可执行,以便它只执行一次。

关于bash - Packer 和安装后脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23291394/

相关文章:

regex - 如何使用 sed 在文件中创建此模式

linux - 远程 ESXi 构建器检索 VM ip 失败。 ESXi 6.0,封隔器

linux - 在终端 bash 中列出 vim 中打开的缓冲区

java - 为什么我的环境变量在 Windows 系统的 common shell 中有效,但在 power shell 中无效?

linux - bash 脚本中的 sed 输出在 CLI 中有效,在 cron 中输出不同

linux - 算术表达式 : expecting EOF: "008 +1"

ruby - 从 Packer 创建自定义 Vagrantfile

amazon-web-services - Packer 无法附加 EBS 卷

linux - 运行 yum 命令并通过电子邮件发送结果...全部在 cron bash shell 作业中

linux - 检查参数是否是 bash shell 中的有效日期