关于计划脚本

计划脚本构成部署或捕获过程的一部分。计划脚本是用于完成定制(部署)或泛化(捕获)过程的 guestfish 脚本。部署类型的计划脚本用于执行部署,捕获类型的计划脚本用于执行捕获。部署类型的计划脚本包含自定义属性。自定义属性用于提供服务器特定的配置信息。默认情况下,自定义属性具有字符串类型,以后可以在操作系统构建计划中修改该类型。

在创建计划脚本时,请遵循特定的约定。其中一项是用 @自定义属性名称:自定义属性值@ 语法指定自定义属性。以下示例为 ESXi 主机自定义主机名和 SSH 服务器设置:

#!/usr/bin/guestfish -f 

#set the host name for the server

esxcli system hostname set -H "@HostName:DEFAULT

#set the SSH server flag

esxcli network firewall ruleset set --ruleset-id

"@SSH_SERVER:DISABLE@" --enabled yes

在定制过程中,将合并操作系统构建计划中提供的所有计划脚本,并将自定义属性替换为指定的值。然后在 guestfish 环境下执行该组合脚本。

您可以在计划脚本中包含日志消息,以通知服务器管理员在执行计划脚本时出现的任何错误。将在服务器配置文件活动中显示日志消息。您可以使用以下格式加入这些日志消息:

echo "ImageStreamerLog: [log message]"

有关 guestfish 的详细信息,请参阅http://libguestfs.org/guestfish.1.html

计划脚本语法建议

在创建计划脚本时,可以考虑以下建议:
  1. 不要在计划脚本中包含以下 guestfish 命令,因为 Image Streamer 在安装操作系统卷时自动调用这些命令:
    • guestfish

    • add <disk.img>

    • run

  2. 根据 guestfish 约定,
    • / 开头的任何文件路径表示安装的黄金映像文件系统中的文件路径。

    • ./ 开头的任何文件路径表示 Image Streamer 设备提供的临时空间。在定制或泛化过程中,可以使用该临时空间存储临时文件。
      注意:

      在完成定制或泛化过程后,将清除该临时空间。

  3. 您可以使用 ! 调用 bash 命令。也可以使用 heredoc 语法嵌入 bash 命令。

  4. 在执行计划脚本时,将在部署日志中记录执行结果。要创建额外的日志消息,请使用以下语法:

    echo "ImageStreamerLog: [log message]"

  5. @ 字符用于在脚本计划中指定自定义属性。因此,如果要将 @ 字符用于不同的用途,必须使用 @@ 而不是 @