关于计划脚本
计划脚本构成部署或捕获过程的一部分。计划脚本是用于完成定制(部署)或泛化(捕获)过程的 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。
计划脚本语法建议
-
不要在计划脚本中包含以下
guestfish
命令,因为 Image Streamer 在安装操作系统卷时自动调用这些命令:-
guestfish
-
add <disk.img>
-
run
-
-
根据
guestfish
约定,-
以
/
开头的任何文件路径表示安装的黄金映像文件系统中的文件路径。 -
以
./
开头的任何文件路径表示 Image Streamer 设备提供的临时空间。在定制或泛化过程中,可以使用该临时空间存储临时文件。注意:在完成定制或泛化过程后,将清除该临时空间。
-
-
您可以使用
!
调用bash
命令。也可以使用heredoc
语法嵌入bash
命令。 -
在执行计划脚本时,将在部署日志中记录执行结果。要创建额外的日志消息,请使用以下语法:
echo "ImageStreamerLog: [log message]"
-
@
字符用于在脚本计划中指定自定义属性。因此,如果要将@
字符用于不同的用途,必须使用@@
而不是@
。