> For the complete documentation index, see [llms.txt](https://docs.verge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verge.io/automate-protect-and-extend/zh/zi-dong-hua/vm-recipes.md).

# VM 配方

VM 配方提供了一种强大的方式，可根据标准配置快速部署特定于实例的虚拟机。本页面将引导您了解创建和使用 VM 配方的过程。

## 什么是 VM 配方？

VM 配方是用于启动全新独特虚拟机的可自定义模板。它们可以通过在 VM 实例化时创建的键值存储包含初始硬件规格、资源池分配以及自定义配置选项。例如，可以将某个配方配置为提示输入数据库用户名和密码，或者选择要安装的一组特定软件包。用户在创建新的 VM 实例时，可以直接在用户界面中确定选项。配方还可与 VergeOS API 结合使用，以创建自定义用户界面，并通过与现有系统（例如服务门户）集成进一步简化流程。

**行业标准集成**\
VergeOS 支持 **Cloud-Init** （Linux）以及 **Cloudbase-Init** （Windows）来在首次启动时自定义 VM。这可以包括设置用户、安装软件包或运行脚本等任务。配方可通过提供用于收集输入的用户界面并动态创建相关应答文件，帮助您快速部署 cloud-init/Cloudbase-init 实现。更多信息请参见 [高级用法](#advanced-usage) 下方。

**使用 VM 配方的好处**

* 快速部署新的虚拟机
* VM 配置的一致性
* 减少手动设置时间
* 可根据特定应用需求进行自定义

## 包含的 VM 配方

VergeOS 系统会自动包含 **服务提供商（Marketplace）仓库** 其中包含可直接用于创建多种新虚拟机的 VM 配方。您可以通过导航至以下位置查看这些可用 VM 配方列表： **仓库 >（双击）MarketPlace 仓库 > VM Recipes**.

![marketplaceVMlisting](/files/d5285f0424b4c1d99814a6931ce03a21779a666b)

您可以双击某个单独的 VM 配方来查看其配置。

![included-recipe-config](/files/11400105cc0b47dae32095f33e6ab32f04838d83)

## 创建新的 VM 配方

### 基础配置

1. **创建一个 VM** 作为 **基础模板** 用于该配方。该 VM 应经过通用化处理，并适合复制/自定义过程。
2. 从顶部菜单中，导航到 **虚拟机** > **+ 新建 VM 配方**.

{% hint style="info" %}
**配方存储在** [**目录**](/automate-protect-and-extend/zh/zi-dong-hua/recipes-organization.md#catalogs)**中。如果您尚未创建本地目录，系统将提示您先创建一个新的目录。**
{% endhint %}

3. **配方字段**

   * **名称：** 使用具有描述性的名称，能够充分标识该配方，并帮助用户找到合适的配方。
   * **说明：** （可选）您可以在此处存储有关此配方的任何附加信息。这是提供基本文档、说明预期用途和一般指导的好地方。
   * **图标：** （可选）一个 *Font-Awesome* 图标可以与该配方关联。图标可帮助用户轻松识别不同的配方/配方类型。
   * **目录：** 选择一个用于存储该配方的目录。目录有助于整理配方。
   * **虚拟机：** 选择一个模板 VM。
   * **版本：** 分配一个版本号。每次修改该配方时，此字段将自动递增，以帮助跟踪更改。

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>版本编号</strong></p><p>版本号 1.0.0 会递增为 1.0.0-1，然后是 1.0.0-2，依此类推。此外，您还可以手动编辑版本号以反映更大的版本变更，例如在进行重大配方修改后将版本更改为 2.0.0。</p></div>

   * **对问题名称使用资产：** 启用后，驱动器和 NIC 问题名称将基于分配的资产编号，而不是序号。

   <div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p><strong>当某个配方基于虚拟机时，将自动为该 VM 的每个驱动器创建驱动器问题，例如 YB_DRIVE_1_SIZE、YB_DRIVE_3_NONPERSISTENT、YB_DRIVE_2_SERIAL 等。</strong></p></div>

   * **版本依赖项：** （不适用于仅在本地系统及其自身租户中使用的配方）。当配方正常工作需要某些 VergeOS 功能时，可以指定依赖项（以防止远程系统使用其无法支持的配方）。
4. 点击 **提交** 以保存基础配置。VM 配方仪表板将显示您可以配置各个部分和问题的位置。

### 问题

配方问题用于确定键值。创建配方时，会自动包含一些问题。其中部分问题默认被禁用，如果您希望使用它们，需要先启用。

1. **（可选）启用默认禁用的问题：** 点击“问题”（左侧菜单或仪表板卡片），选择问题，然后在左侧菜单中点击“启用”。
2. 要配置其他问题，请点击 **问题** 在左侧菜单中，然后点击 **新建**.

**问题字段**:

* **部分：** 每个问题都属于一个部分。部分可让您在输入表单上对问题进行分组。一些部分会自动创建。您也可以选择为您的问题创建新部分。
* **名称：** 作为可在脚本中引用的变量名；请使用具有描述性的名称，以便于脚本维护和故障排除；仅限字母数字字符（无空格或特殊字符）
* **类型：** 决定如何收集数据：通过用户输入、与 VergeOS 数据库交互、下载云镜像等。
* **顺序 ID：** 用于确定问题的显示顺序（在所选部分内）
* **显示：** 在 VergeOS 界面中显示给用户，用于回答配方问题的文本
* **默认值：** （可选）定义该问题的初始答案值
* **正则验证：** （可选）用于验证输入的正则表达式字符串（标准 Regex 语法）
* **占位文本：** （可选）以灰色显示的文本，用于向用户提供预期输入示例
* **工具提示文本：** （可选）当鼠标悬停在该字段上时，以弹出窗口显示的用户帮助文本
* **注释文本：** （可选）直接显示在输入字段下方的用户帮助文本，用于提供额外指导。
* **变更时：** 允许在更改此字段时隐藏/显示其他问题。（创建新问题时，此字段中会显示示例代码。）

  根据所选类型，可能还会提供其他配置选项。

## 模拟 VM 配方

您可以模拟 VM 配方来进行测试。模拟该配方将允许您查看用户输入表单、测试字段验证并创建示例应答文件，以验证您的配置。您只能模拟已发布到本地目录的 VM 配方。如有需要，您可以引用 Marketplace 配方并将其克隆到本地目录。

* 若只想查看用户输入表单：在 VM 配方仪表板中，点击 **模拟配方** 在左侧菜单中。
* 在模拟输入表单中，您可以通过点击表单底部的 **模拟** 按钮来测试字段验证并生成测试应答文件。随后会显示变量/值对列表以及模拟结果文件的打印输出。
* 若要根据输入继续创建 VM，请点击“创建”按钮。

## 修改 VM 配方

对配方进行任何更改后，都需要重新发布，才能使这些更改可用。配方仪表板顶部会显示一条消息，提示必须重新发布更改才会生效。您可以使用 **重新发布** 此消息中的链接，或在左侧菜单中点击“重新发布”。

{% hint style="success" %}
**当您进行更改并重新发布配方时，远程系统和租户会收到更新可用的通知（VM 配方仪表板顶部的通知以及“更新可用”复选框）；他们必须更新该配方才能访问这些更改。**
{% endhint %}

## 使用 VM 配方

在创建新的虚拟机时可以使用 VM 配方。所有可访问的目录（本地和远程）都会列在新 VM 界面的左侧；选择某个目录即可查看可用的单个配方。

## 配方实例

实例是指与 VM 配方关联的虚拟机。当某个虚拟机使用配方创建后，在其被删除或从配方中分离之前，它都被视为该配方的一个实例。

点击 **实例** 在 VM 配方仪表板的左侧菜单中可快速访问关联 VM 列表。当存在任何关联的 VM 实例时，无法删除 VM 配方。

## 高级用法

### Cloud-Init 和 Cloudbase-init 集成

**与 VM 模板一起使用：**

* 将 **Cloud-init 数据源字段 =&#x20;*****Config Drive v2***.
* 在 VM 模板中安装 Cloud-init 及相关脚本。

**使用在线 OS 镜像：**\
VergeOS 配方允许利用许多预装的 cloud-init 操作系统镜像，这些镜像可由大多数 Linux 和 FreeBSD 操作系统下载。要使用特定的已下载镜像，您可以创建如下配置的配方问题：

* **名称=*****"OS\_DL\_URL"***
* **类型=*****隐藏***
* **默认值**：下载 URL（例如 `https://cloud-images.example.com/releases/jammy/release/ubuntu-22.04-server-cloudimg-amd64-disk-kvm.img`, `http://download.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-GenericCloud.latest.x86_64.qcow2`)

若要通过网络流式传输云镜像，您可以创建如下配置的配方问题：

* **名称=*****"OS\_URL"***
* **类型=*****隐藏***
* **默认值**：镜像 URL（例如 `https://cloud/debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2`)

**参考示例：**\
[Marketplace 配方](#included-vm-recipes) 为在配方中使用 cloud-init/cloudbase-init OS 镜像提供了很好的示例。

与 Cloud-init/Cloudbase-init 的集成可提供许多解决方案，并有多种潜在方法可供选择。如果您需要更多帮助，请联系 VergeOS 支持。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verge.io/automate-protect-and-extend/zh/zi-dong-hua/vm-recipes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
