IBM SmartCloud init(一个 IBM SmartCloud 支持包)是从开源 cloud-init 包上获得灵感而开发出来的第一个启动脚本。它最初是采用 ICON bundle 的形式在 Image Construction and Composition Tools (ICON) 和 IBM SmartCloud Provisioning 1.2 之间的集成上下文中开发的,后来扩展成为 IBM SmartCloud Provisioning 2.1 中的一个关键组件。
IBM SmartCloud init 是一个简单的独立组件,该组件在虚拟机 (VM) 启动时执行,以便使用被格式为多个部分组成的多用途 Internet 邮件扩展 (MIME) 的配置数据。IBM SmartCloud init 会获得此输入数据,并查看与每个部分关联的内容类型。如果内容类型是已知的,那么 IBM SmartCloud init 会调用相关使用者。
利用 IBM SmartCloud init 脚本的可能用例
第一个用例和相关的 MIME 类型是支持 ICON 生成的开放虚拟化格式 (OVF) 镜像。当前的实现只处理一种内容类型(应用程序/ovf-param)和一个使用者来处理 OVF 元数据,并将相关部分作为激活引擎 (AE) 的 OVF-env.xml 进行保存。
您可以使用 IBM SmartCloud init 来初始化一个在启动时执行了一系列操作的云实例,比如安装一系列 Red Hat 软件包 (RPM),并在启动时执行命令,或者在启动时下载和执行脚本(这对于虚拟机到虚拟机的转换非常有用)。或者,您可以对该脚本进行扩展,以支持程序包的已排序列表,例如:
IBM Tivoli® Endpoint Manager(TEM 或 BigFix)Fixlet(通过在启动 VM 时部署 BigFix 代理和 Fixlet) Chef Recipes Puppet 策略 ICON/Image Construction and Composition Tool (ICCT) bundle(用于安装任何 IBM 中间件,如 IBM DB2® 或
WebSphere® 应用服务器) Maestro bundle IBM
Workload Deployer (IWD) 脚本程序包 RPM 和 Debian 本机程序包
您可以使用指向储存库搜索顺序的统一资源标识符来下载用于执行的程序包。其他用例包括支持 Maestro 使用包含 IBM SmartCloud init 首次启动脚本的任何镜像,该脚本将下载和安装 Maestro 代理,并扩展 IBM SmartCloud Provisioning 安装程序,以便创建一个基本的 Red Hat Enterprise Linux 镜像,该镜像具有已安装的 IBM SmartCloud init 程序包。这样,任何根据该镜像创建的新实例都可以在激活时自动执行任务。
IBM SmartCloud init 可交付成果
scp-cloud-init 是一个可用于 Linux 和 Windows 的简单组件。Linux 中的 scp-cloud-init 包含文件 scp-cloud-init。在使用级别 3 和 5 的镜像中安装此文件的最简单方法是运行以下命令:
cp -f scp-cloud-init.sh /etc/init.d/scp-cloud-init 2>/dev/nullchkconfig scp-cloud-init on
如果您已经挂载该磁盘,并且无法使用 chkconfig,那么可以使用清单 1 中显示的命令手动生成 rc#.d 链接。
清单 1. 手动生成 rc#.d 链接的命令
if [ -d /etc/rc3.d ]; then ln -fs ../init.d/scp-cloud-init /etc/rc3.d/S11scp-cloud-init chmod 755 /etc/rc3.d/S11scp-cloud-init 2>/dev/nullfiif [ -d /etc/init.d/rc3.d ]; then ln -fs ../scp-cloud-init /etc/init.d/rc3.d/S11scp-cloud-init chmod 755 /etc/init.d/rc3.d/S11scp-cloud-init 2>/dev/nullfiif [ -d /etc/rc5.d ]; then ln -fs ../init.d/scp-cloud-init /etc/rc5.d/S11scp-cloud-init chmod 755 /etc/rc5.d/S11scp-cloud-init 2>/dev/nullfiif [ -d /etc/init.d/rc5.d ]; then ln -fs ../scp-cloud-init /etc/init.d/rc5.d/S11scp-cloud-init chmod 755 /etc/init.d/rc5.d/S11scp-cloud-init 2>/dev/nullfi # The S## above should be after the "network" but before any activation.* (AE) scripts.
Windows 中的 scp-cloud-init 包含文件 scp-cloud-init.cmd 和 scp-cloud-init.vbs。要在镜像中安装这些文件以便在启动时运行它们,请执行以下操作:
将 scp-cloud-init.* 文件复制到某个目录,比如 C:\windows\setup\ibm。 通过运行 gpedit.msc 添加将在启动时使用组策略编辑器运行的脚本。 单击Computer Configuration > Windows Settings > Scripts,
然后双击 Startup。 单击 Add,然后键入 c:\Windows\Setup\IBM\scp-cloud-init.cmd 作为该程序(无参数)。 单击 OK,再次单击 OK 退出启动脚本窗口,然后退出 gpedit 应用程序。
以前向 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 添加注册表项的方法(如下所示)似乎只在管理员登录时执行脚本,在系统启动时不会自动执行脚本。
"reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /f /v a-cloud-init /d c:\windows\setup\ibm\scp-cloud-init.cmd"
scp-cloud-init 在 Linux 中是作为 RPM 程序包提供的,在 Windows 中是作为 .msi 文件提供的。