你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Cloud-Init

CycleCloud 支持 cloud-init 作为一种在首次启动时配置虚拟机 (VM) 的方式,然后再 在 VM 上执行任何其他 CycleCloud 特定配置。 在安装由 CycleCloud (HPC 计划程序管理的任何软件之前,使用 cloud-init 是配置 VM ((例如网络、yum/apt 镜像等)) ) 的一种有效方法。

下面是使用群集模板中的 属性指定要在启动时 CloudInit 运行的 bash 脚本的简单示例:

[node scheduler]
CloudInit = '''#!/bin/bash
echo "cloud-init works" > /tmp/cloud-init.txt
'''

注意

可以在群集模板中使用带三引号的字符串来指定多行字符串,例如 bash 或 YAML 脚本。

警告

并非Azure 支持 cloud-init 中的所有 OS 映像。 有关哪些映像支持 cloud-init 的详细信息,请参阅 cloud-init 对 Azure 中虚拟机的 cloud-init 支持,以及何时将提供更广泛的支持时间线。

使用 UI 设置 Cloud-Init

CycleCloud UI 支持 cloud-init 编辑。 创建或编辑任何群集时,可以使用名为“Cloud-Init”的新选项卡编辑群集中每个节点的 cloud-init 脚本。 CycleCloud UI 中的编辑器将允许任何文本输入。 为 Python、Shell 脚本或 YAML 启用语法突出显示。

在 CycleCloud UI 中编辑 cloud-init

Cloud-Init 排序和错误处理

对于具有 CloudInit 指定的 CycleCloud 节点,CycleCloud 将预配 VM,并等待 cloud-init 运行完成 ,然后执行 任何其他配置。 如果在 CloudInit 节点上指定 ,并且 CycleCloud 未检测到对 OS 的 cloud-init 支持,则节点将进入错误状态,原因将中继到 CycleCloud。 CloudInit如果脚本无法执行 (例如由于脚本错误或语法错误) ,则节点将进入错误状态,cloud-init 报告的错误将中继到 CycleCloud。

cloud-init 运行完成且未出错后,CycleCloud 将继续像往常一样配置 VM。

重要

CycleCloud 不会 自动合并 cloud-init 脚本。 [node defaults]如果 指定 cloud-init 以及继承自默认值的节点,则将覆盖 中的 [node defaults] cloud-init 脚本。 需要共享代码时,建议手动合并脚本。 或者,可以使用 包含文件用户数据格式 来包含要由 cloud-init 处理的 URL 列表。