> 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/vi/tu-dong-hoa/vm-recipes.md).

# Recipe VM

Các công thức VM cung cấp một cách mạnh mẽ để triển khai nhanh các máy ảo dành riêng cho từng phiên bản từ một cấu hình chuẩn. Trang này sẽ hướng dẫn bạn quy trình tạo và sử dụng công thức VM.

## Công thức VM là gì?

Các công thức VM là các mẫu có thể tùy chỉnh để khởi chạy các máy ảo mới, duy nhất. Chúng có thể bao gồm thông số phần cứng ban đầu, phân bổ vào pool tài nguyên và các tùy chọn cấu hình tùy chỉnh thông qua một kho giá trị khóa được tạo khi khởi tạo VM. Ví dụ, một công thức có thể được cấu hình để yêu cầu tên người dùng và mật khẩu cơ sở dữ liệu, hoặc chọn một bộ gói cài đặt cụ thể. Người dùng có thể xác định các tùy chọn ngay từ giao diện người dùng khi tạo phiên bản VM mới. Công thức cũng có thể được tận dụng cùng với VergeOS API để tạo giao diện người dùng tùy chỉnh và tinh giản thêm quy trình bằng cách tích hợp với các hệ thống hiện có, ví dụ: cổng dịch vụ.

**Tích hợp theo chuẩn công nghiệp**\
VergeOS hỗ trợ cả **Cloud-Init** (Linux) và **Cloudbase-Init** (Windows) để tùy chỉnh VM trong lần khởi động đầu tiên. Việc này có thể bao gồm các tác vụ như thiết lập người dùng, cài đặt gói, hoặc chạy script. Công thức có thể cho phép bạn triển khai nhanh các triển khai cloud-init/Cloudbase-init bằng cách cung cấp giao diện người dùng để thu thập đầu vào và tự động tạo các tệp câu trả lời liên quan. Xem [Cách sử dụng nâng cao](#advanced-usage) bên dưới để biết thêm thông tin.

**Lợi ích khi sử dụng công thức VM**

* Triển khai nhanh các máy ảo mới
* Tính nhất quán giữa các cấu hình VM
* Giảm thời gian thiết lập thủ công
* Có thể tùy chỉnh để đáp ứng nhu cầu ứng dụng cụ thể

## Các công thức VM đi kèm

Hệ thống VergeOS tự động bao gồm **Kho Nhà cung cấp dịch vụ (Marketplace)** gồm các công thức VM có thể dùng ngay để tạo nhiều loại máy ảo mới. Danh sách các công thức VM hiện có này có thể xem bằng cách điều hướng tới **Repositories > (nhấp đúp) kho MarketPlace > VM Recipes**.

![marketplaceVMlisting](/files/c48694825b042b09a14c5a5950f4d8d1d799057f)

Bạn có thể nhấp đúp vào từng công thức VM để xem cấu hình của nó.

![included-recipe-config](/files/6c8cfaeb5b05080c02f2481abbfd7cc6d0fe5139)

## Tạo công thức VM mới

### Cấu hình cơ sở

1. **Tạo một VM** để làm **mẫu cơ sở** cho công thức. VM nên được tổng quát hóa và phù hợp cho quá trình sao chép/tùy chỉnh.
2. Từ menu trên cùng, đi tới **Máy ảo** > **+ Công thức VM mới**.

{% hint style="info" %}
**Các công thức được lưu trong** [**Danh mục**](/automate-protect-and-extend/vi/tu-dong-hoa/recipes-organization.md#catalogs)**. Nếu bạn chưa có danh mục cục bộ nào được tạo, bạn sẽ được nhắc tạo mới một danh mục trước.**
{% endhint %}

3. **Các trường của công thức**

   * **Tên:** Sử dụng một tên mô tả để xác định rõ công thức và giúp người dùng tìm các công thức phù hợp.
   * **Mô tả:** (tùy chọn) Bạn có thể lưu bất kỳ thông tin bổ sung nào về công thức này ở đây. Đây có thể là nơi tốt để cung cấp tài liệu cơ bản về mục đích dự kiến và các hướng dẫn chung.
   * **Biểu tượng:** (tùy chọn) một *Font-Awesome* biểu tượng có thể được gắn với công thức. Biểu tượng có thể giúp người dùng dễ dàng nhận biết các công thức/loại công thức khác nhau.
   * **Danh mục:** Chọn một danh mục để lưu công thức. Danh mục giúp sắp xếp công thức gọn gàng.
   * **Máy ảo:** Chọn một VM mẫu.
   * **Phiên bản:** Gán một số phiên bản. Trường này sẽ tự động tăng mỗi khi công thức được sửa đổi, để giúp theo dõi thay đổi.

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>Đánh số phiên bản</strong></p><p>Một số phiên bản 1.0.0 sẽ được tăng thành 1.0.0-1 rồi 1.0.0-2 và tiếp tục như vậy. Ngoài ra, bạn có thể chỉnh sửa thủ công số phiên bản để phản ánh các thay đổi phiên bản lớn hơn, chẳng hạn thay phiên bản thành 2.0.0 sau khi thực hiện các sửa đổi đáng kể đối với công thức.</p></div>

   * **Dùng mã tài sản cho tên câu hỏi:** Khi bật, tên câu hỏi ổ đĩa và NIC dựa trên số tài sản được gán thay vì số thứ tự.

   <div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p><strong>Khi công thức dựa trên một máy ảo, các câu hỏi về ổ đĩa sẽ được tạo tự động cho từng ổ đĩa của VM, ví dụ: YB_DRIVE_1_SIZE, YB_DRIVE_3_NONPERSISTENT, YB_DRIVE_2_SERIAL, v.v.</strong></p></div>

   * **Phụ thuộc phiên bản:** (Không áp dụng cho các công thức chỉ được dùng trên hệ thống cục bộ và các tenant của chính nó). Có thể chỉ định các phụ thuộc khi có các tính năng VergeOS cần thiết để công thức hoạt động đúng (để ngăn hệ thống từ xa sử dụng một công thức mà nó không thể đáp ứng).
4. Nhấp **Gửi** để lưu cấu hình cơ sở. Bảng điều khiển công thức VM sẽ hiển thị nơi bạn có thể cấu hình các phần và câu hỏi của mình.

### Câu hỏi

Các câu hỏi của công thức được dùng để xác định các giá trị khóa. Khi một công thức được tạo, một số câu hỏi được bao gồm tự động. Một số câu hỏi này mặc định bị vô hiệu hóa và cần được bật nếu bạn muốn sử dụng chúng.

1. **(Tùy chọn) Bật câu hỏi mặc định bị vô hiệu hóa:** Nhấp vào Câu hỏi (menu bên trái hoặc thẻ trên bảng điều khiển), chọn các câu hỏi, rồi nhấp Bật ở menu bên trái.
2. Để cấu hình thêm câu hỏi, nhấp **Câu hỏi** ở menu bên trái, rồi **Mới**.

**Các trường câu hỏi**:

* **Phần:** mỗi câu hỏi thuộc về một phần. Các phần cho phép bạn nhóm các câu hỏi trên biểu mẫu nhập liệu. Một số phần được tạo tự động. Bạn cũng có thể tạo mới các phần cho các câu hỏi của mình nếu muốn.
* **Tên:** đóng vai trò là tên biến có thể được tham chiếu trong script; hãy dùng một tên mô tả để hỗ trợ bảo trì script và khắc phục sự cố; chỉ dùng ký tự chữ-số (không có khoảng trắng hoặc ký tự đặc biệt)
* **Loại:** xác định cách dữ liệu được thu thập: qua nhập liệu của người dùng, tương tác với cơ sở dữ liệu VergeOS, tải xuống ảnh cloud, v.v.
* **ID thứ tự:** được dùng để xác định thứ tự hiển thị các câu hỏi (trong phần đã chọn)
* **Hiển thị:** văn bản hiển thị trong giao diện VergeOS để người dùng trả lời các câu hỏi của công thức
* **Giá trị mặc định:** (tùy chọn) xác định một giá trị trả lời ban đầu cho câu hỏi
* **Xác thực Regex:** (tùy chọn) chuỗi biểu thức chính quy dùng để xác thực đầu vào (cú pháp Regex tiêu chuẩn)
* **Văn bản giữ chỗ:** (tùy chọn) văn bản màu xám hiển thị để cho người dùng một ví dụ về dữ liệu đầu vào mong đợi
* **Văn bản chú giải:** (tùy chọn) văn bản trợ giúp cho người dùng hiển thị trong một cửa sổ bật lên khi di chuột qua trường
* **Văn bản ghi chú:** (tùy chọn) văn bản trợ giúp cho người dùng hiển thị ngay bên dưới trường nhập để cung cấp hướng dẫn bổ sung.
* **Khi thay đổi:** cho phép ẩn/hiện các câu hỏi khác khi trường này thay đổi. (Mã ví dụ sẽ được hiển thị trong trường này khi tạo một câu hỏi mới.)

  Các tùy chọn cấu hình bổ sung có thể khả dụng tùy thuộc vào loại đã chọn.

## Mô phỏng công thức VM

Bạn có thể mô phỏng một công thức VM để kiểm tra nó. Việc mô phỏng công thức sẽ cho phép bạn xem biểu mẫu nhập liệu của người dùng, kiểm tra xác thực trường và tạo các tệp câu trả lời mẫu để xác minh cấu hình của bạn. Bạn chỉ có thể mô phỏng một công thức VM đã được xuất bản lên danh mục cục bộ của bạn. Nếu muốn, bạn có thể tham chiếu và sao chép các công thức Marketplace vào danh mục cục bộ.

* Để chỉ xem biểu mẫu nhập liệu của người dùng: khi đang ở bảng điều khiển công thức VM, nhấp **Mô phỏng công thức** từ menu bên trái.
* Từ biểu mẫu nhập liệu mô phỏng, bạn có thể kiểm tra xác thực trường và tạo các tệp câu trả lời kiểm thử bằng cách nhấp vào **Mô phỏng** nút ở cuối biểu mẫu. Một danh sách các cặp biến/giá trị, cùng với bản in các tệp kết quả mô phỏng, sẽ được hiển thị.
* Để tiếp tục tạo VM từ các đầu vào, hãy nhấp nút Tạo.

## Sửa đổi công thức VM

Khi có bất kỳ thay đổi nào đối với công thức, nó sẽ cần được xuất bản lại để các thay đổi đó có hiệu lực. Phần trên cùng của bảng điều khiển công thức sẽ hiển thị thông báo cho biết nó phải được xuất bản lại để thay đổi có hiệu lực. Bạn có thể dùng **Xuất bản lại** liên kết trong thông báo này hoặc nhấp Xuất bản lại ở menu bên trái.

{% hint style="success" %}
**Khi bạn thực hiện thay đổi và xuất bản lại một công thức, các hệ thống và tenant từ xa sẽ được thông báo rằng có bản cập nhật (thông báo ở đầu bảng điều khiển công thức VM và ô chọn có bản cập nhật); họ phải cập nhật công thức để truy cập các thay đổi.**
{% endhint %}

## Sử dụng công thức VM

Các công thức VM có thể được sử dụng khi tạo một Máy ảo mới. Tất cả các danh mục có thể truy cập (cục bộ và từ xa) được liệt kê ở bên trái màn hình tạo VM mới; chọn một danh mục để xem các công thức riêng lẻ có sẵn.

## Các phiên bản công thức

Một phiên bản (Instance) chỉ một máy ảo được liên kết với một công thức VM. Khi một máy ảo được tạo bằng công thức, nó được xem là một phiên bản của công thức cho đến khi bị xóa hoặc tách khỏi công thức.

Nhấp **Các phiên bản** ở menu bên trái của bảng điều khiển công thức VM để nhanh chóng truy cập danh sách các VM được liên kết. Một công thức VM không thể bị xóa khi còn bất kỳ phiên bản VM nào được liên kết.

## Cách sử dụng nâng cao

### Tích hợp Cloud-Init và Cloudbase-init

**Để sử dụng với mẫu VM:**

* Đặt **Trường Cloud-init Datasource =&#x20;*****Config Drive v2***.
* Cài đặt Cloud-init và các script liên quan trong mẫu VM.

**Để sử dụng ảnh hệ điều hành trực tuyến:**\
Công thức VergeOS cho phép tận dụng nhiều ảnh hệ điều hành cloud-init đã cài sẵn có thể tải xuống dành cho hầu hết các hệ điều hành Linux và FreeBSD. Để sử dụng một ảnh đã tải xuống cụ thể, bạn có thể tạo một câu hỏi trong công thức được cấu hình như sau:

* **Tên=*****"OS\_DL\_URL"***
* **Loại=*****Ẩn***
* **Giá trị mặc định**: URL tải xuống (ví dụ `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`)

Để truyền trực tuyến một ảnh cloud qua web, bạn có thể tạo một câu hỏi trong công thức được cấu hình như sau:

* **Tên=*****"OS\_URL"***
* **Loại=*****Ẩn***
* **Giá trị mặc định**: URL ảnh (ví dụ `https://cloud/debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2`)

**Ví dụ tham khảo:**\
[Các công thức Marketplace](#included-vm-recipes) cung cấp những ví dụ tốt về cách sử dụng các ảnh hệ điều hành cloud-init/cloudbase-init trong một công thức.

Tích hợp với Cloud-init/Cloudbase-init cho phép nhiều giải pháp với nhiều cách tiếp cận tiềm năng khác nhau. Hãy liên hệ Bộ phận hỗ trợ VergeOS nếu bạn cần thêm trợ giúp.


---

# 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/vi/tu-dong-hoa/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.
