> 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/learn-the-platform/vi/mo-dun-7-da-thue-bao/03-tenant-recipes.md).

# Tenant Recipes

## Mẫu thuê bao là gì?

Mẫu thuê bao biến một thuê bao được cấu hình thủ công thành một **mẫu triển khai có thể tái sử dụng, chỉ với một cú nhấp chuột**. Một mẫu thuê bao duy nhất có thể tự động hóa việc tạo ra một Trung tâm dữ liệu ảo hoàn chỉnh — bao gồm cài đặt thuê bao, cấu hình mạng, quy tắc tường lửa, các máy ảo đi kèm, thông tin xác thực ngẫu nhiên, đăng ký DNS/DHCP và thông báo email — tất cả chỉ từ một lần gửi biểu mẫu.

```mermaid
flowchart LR
    BASE["Thuê bao cơ sở<br/>(đã tắt nguồn)"] --> RECIPE["Mẫu thuê bao<br/>+ Câu hỏi"]
    RECIPE --> I1["Phiên bản thuê bao A"]
    RECIPE --> I2["Phiên bản thuê bao B"]
    RECIPE --> I3["Phiên bản thuê bao C"]

    style BASE fill:#fff3e0,stroke:#e65100
    style RECIPE fill:#e8f5e9,stroke:#2e7d32
    style I1 fill:#e3f2fd,stroke:#1565c0
    style I2 fill:#e3f2fd,stroke:#1565c0
    style I3 fill:#e3f2fd,stroke:#1565c0
```

Trong khi Trình hướng dẫn thuê bao (được đề cập ở trang trước) hướng dẫn bạn qua một cấu hình thủ công một lần, thì các mẫu **mã hóa** cấu hình đó để có thể lặp lại hàng trăm lần với tùy chỉnh cho từng phiên bản.

### Tại sao nên dùng Mẫu thuê bao?

### Triển khai nhanh chóng

Rút ngắn việc cấp phát thuê bao từ hàng giờ cấu hình thủ công xuống còn vài phút triển khai tự động.

### Tính nhất quán & Tuân thủ

Mọi phiên bản thuê bao đều tuân theo cùng một nền tảng ảnh chuẩn — mạng, quy tắc tường lửa, VM và chính sách đều giống nhau.

### Giảm lỗi do con người

Tự động hóa loại bỏ các cấu hình sai sót dễ phát sinh trong quá trình thiết lập thủ công lặp đi lặp lại.

### Hỗ trợ tự phục vụ

Kết hợp với API, các mẫu cung cấp sức mạnh cho các cổng thông tin hướng tới khách hàng, nơi người dùng cuối tự cấp phát VDC của họ.

## Chuẩn bị thuê bao cơ sở

Mọi mẫu thuê bao đều bắt đầu với một **thuê bao cơ sở** đóng vai trò là mẫu. Thuê bao này phải là:

1. **Đã tắt nguồn** — hệ thống mẫu sẽ ghi lại trạng thái của thuê bao, vì vậy nó không được đang chạy
2. **Dành riêng cho việc dùng làm mẫu** — không dùng một thuê bao sản xuất làm cơ sở. Nếu bạn muốn dựa một mẫu trên một thuê bao hiện có, hãy sao chép nó trước rồi loại bỏ dữ liệu đặc thù của khách hàng (mật khẩu, tên người dùng, tệp khách hàng)
3. **Được cấu hình đầy đủ** — bao gồm tất cả mạng, VM, quy tắc tường lửa, cài đặt DHCP/DNS và mọi cấu hình khác cần xuất hiện trong mỗi phiên bản

Hãy xem thuê bao cơ sở như một **golden image** cho cả một trung tâm dữ liệu, không chỉ cho một VM duy nhất.

## Tạo một Mẫu thuê bao

### Quy trình từng bước

1. Xây dựng và cấu hình thuê bao cơ sở với tất cả cài đặt, mạng và VM mong muốn
2. Tắt nguồn thuê bao cơ sở
3. Đi tới **Kho lưu trữ > Mẫu thuê bao** trong giao diện VergeOS
4. Nhấp **Mới** trong menu bên trái
5. Cấu hình các trường của mẫu (xem bên dưới)
6. Nhấp **Gửi** để lưu — bảng điều khiển mẫu sẽ mở ra để tùy chỉnh câu hỏi

### Các trường của mẫu

| Trường                    | Mô tả                                                       | Ghi chú                                                                                                                                                                                          |
| ------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Tên**                   | Tên mô tả cho công thức                                     | Giúp người dùng tìm đúng mẫu khi có nhiều mẫu khả dụng                                                                                                                                           |
| **Mô tả**                 | Tài liệu mô tả tùy chọn cho mẫu                             | Nơi phù hợp để ghi hướng dẫn sử dụng, mục đích dự kiến và các ghi chú tuân thủ                                                                                                                   |
| **Biểu tượng**            | Biểu tượng Font Awesome tùy chọn                            | Nhận diện trực quan để phân biệt các loại mẫu (ví dụ: `fa-cloud`, `fa-database`)                                                                                                                 |
| **Danh mục**              | Danh mục để lưu trữ mẫu                                     | Phải là một danh mục trong kho lưu trữ cục bộ — không thể tạo mẫu trực tiếp trong các kho lưu trữ từ xa/Marketplace. Xem [Trao đổi công thức](#recipe-exchange-sharing-between-systems) bên dưới |
| **Tenant**                | Thuê bao cơ sở dùng làm mẫu                                 | Phải đã tắt nguồn                                                                                                                                                                                |
| **Phiên bản**             | Số phiên bản tự tăng                                        | Bắt đầu từ `1.0.0`, tăng lên `1.0.0-1`, `1.0.0-2`, v.v. Có thể đặt thủ công thành `2.0.0` cho các thay đổi lớn                                                                                   |
| **Giữ lại chứng chỉ SSL** | Sao chép chứng chỉ SSL từ thuê bao cơ sở sang các phiên bản | Bật khi thuê bao cơ sở đã cài sẵn chứng chỉ                                                                                                                                                      |
| **Phụ thuộc phiên bản**   | Yêu cầu tính năng VergeOS                                   | Ngăn các hệ thống từ xa sử dụng một mẫu mà chúng không thể đáp ứng                                                                                                                               |

## Câu hỏi của mẫu

Câu hỏi là trái tim của một mẫu thuê bao. Chúng thu thập đầu vào theo từng phiên bản từ người vận hành (hoặc từ cơ sở dữ liệu VergeOS) và chèn các giá trị đó vào thuê bao mới trong quá trình tạo.

Khi bạn tạo một mẫu thuê bao, VergeOS **tự động tạo các câu hỏi hệ thống** được tổ chức theo từng phần. Nhiều câu hỏi hệ thống mặc định bị tắt và phải được bật rõ ràng nếu cần. Câu hỏi hệ thống không thể bị xóa — chỉ có thể bật hoặc tắt.

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

Mọi câu hỏi — hệ thống hoặc tùy chỉnh — đều được cấu hình với các trường sau:

| Trường               | Mục đích                                                                                              |
| -------------------- | ----------------------------------------------------------------------------------------------------- |
| **Phần**             | Nhóm các câu hỏi trên biểu mẫu nhập liệu (một số được tạo tự động, có thể thêm các phần tùy chỉnh)    |
| **Tên**              | Tên biến được tham chiếu trong script — chỉ dùng chữ và số, không có khoảng trắng hoặc ký tự đặc biệt |
| **Loại**             | Cách dữ liệu được thu thập — trường nhập của người dùng, tra cứu cơ sở dữ liệu, giá trị ẩn, v.v.      |
| **ID thứ tự**        | Thứ tự hiển thị trong phần                                                                            |
| **Hiển thị**         | Nhãn hiển thị trên biểu mẫu nhập của người dùng                                                       |
| **Giá trị mặc định** | Câu trả lời được điền sẵn (tùy chọn)                                                                  |
| **Xác thực regex**   | Biểu thức chính quy để xác thực đầu vào (tùy chọn)                                                    |
| **Văn bản giữ chỗ**  | Văn bản gợi ý màu xám hiển thị định dạng đầu vào mong đợi (tùy chọn)                                  |
| **Văn bản tooltip**  | Cửa sổ bật lên khi rê chuột với văn bản trợ giúp (tùy chọn)                                           |
| **Văn bản ghi chú**  | Văn bản trợ giúp hiển thị trực tiếp bên dưới trường nhập (tùy chọn)                                   |
| **Khi thay đổi**     | JavaScript để hiện/ẩn các câu hỏi khác dựa trên giá trị của trường này (tùy chọn)                     |

### Tài liệu tham chiếu câu hỏi hệ thống

Các bảng sau đây ghi lại các câu hỏi hệ thống có sẵn được tạo cho mọi mẫu thuê bao.

#### Phần thuê bao

Danh tính thuê bao cốt lõi, thông tin đăng nhập quản trị và cấu hình SSL:

| Tên biến                    | Nhãn hiển thị              | Loại         | Mặc định      | Được bật theo mặc định |
| --------------------------- | -------------------------- | ------------ | ------------- | ---------------------- |
| `YB_URL`                    | URL                        | Chuỗi        | —             | Có                     |
| `YB_DESCRIPTION`            | Mô tả                      | Vùng văn bản | —             | Có                     |
| `YB_USER_NAME`              | Người dùng quản trị        | Chuỗi        | `admin`       | Có                     |
| `YB_USER_PASSWORD`          | Mật khẩu                   | Mật khẩu     | —             | Có                     |
| `YB_USER_EMAIL`             | Email                      | Chuỗi        | —             | Không                  |
| `YB_USER_CHANGE_PASSWORD`   | Yêu cầu đổi mật khẩu       | Đúng/Sai     | `false`       | Không                  |
| `YB_EXPOSE_CLOUD_SNAPSHOTS` | Phơi bày snapshot hệ thống | Đúng/Sai     | `true`        | Không                  |
| `YB_HELP_URL`               | URL trợ giúp               | Chuỗi        | `mặc định`    | Không                  |
| `YB_THEME_ACCESS`           | Quyền truy cập giao diện   | Danh sách    | `chỉ máy chủ` | Có                     |
| `YB_SPECIFIED_THEME`        | Giao diện                  | Chọn hàng    | —             | Có                     |
| `YB_CLUSTER`                | Cụm                        | Cụm          | —             | Không                  |
| `YB_CERT_TYPE`              | Loại chứng chỉ SSL         | Ẩn           | `thủ công`    | Không                  |
| `YB_CERT_DOMAIN`            | Tên miền chứng chỉ SSL     | Chuỗi        | —             | Không                  |
| `YB_CERT_PUBLIC`            | Chứng chỉ SSL công khai    | Vùng văn bản | —             | Không                  |
| `YB_CERT_PRIVATE`           | Chứng chỉ SSL riêng        | Vùng văn bản | —             | Không                  |
| `YB_CERT_CHAIN`             | Chuỗi chứng chỉ SSL        | Vùng văn bản | —             | Không                  |

#### Phần nút

Tài nguyên tính toán được phân bổ cho (các) nút ảo của thuê bao:

| Tên biến                     | Nhãn hiển thị          | Loại | Mặc định | Được bật theo mặc định |
| ---------------------------- | ---------------------- | ---- | -------- | ---------------------- |
| `YB_NODE_1_CPU_CORES`        | Số lõi nút 1           | Số   | `8`      | Có                     |
| `YB_NODE_1_RAM`              | RAM nút 1              | RAM  | `16384`  | Có                     |
| `YB_NODE_1_INSTANCES`        | Số phiên bản nút 1     | Số   | `1`      | Không                  |
| `YB_NODE_1_CLUSTER`          | Cụm nút 1              | Cụm  | —        | Không                  |
| `YB_NODE_1_CLUSTER_FAILOVER` | Cụm dự phòng của nút 1 | Cụm  | —        | Không                  |

#### Phần mạng

Địa chỉ mạng cho giao diện người dùng và kết nối bên ngoài của thuê bao:

| Tên biến      | Nhãn hiển thị        | Loại          | Mặc định | Được bật theo mặc định |
| ------------- | -------------------- | ------------- | -------- | ---------------------- |
| `YB_NET_1_IP` | Địa chỉ IP giao diện | Địa chỉ IP ảo | —        | Có                     |
| `YB_NET_2_IP` | Địa chỉ IP           | Địa chỉ IP ảo | —        | Có                     |

{% hint style="success" %}
Đây là các câu hỏi hệ thống mặc định tính đến VergeOS 26.1. Bạn có thể thêm các câu hỏi tùy chỉnh bên cạnh những câu này để thu thập thêm đầu vào như ngày hết hạn, tên máy chủ tùy chỉnh hoặc các giá trị đặc thù khác của thuê bao.
{% endhint %}

## Câu hỏi tùy chỉnh

Ngoài các câu hỏi hệ thống, bạn có thể thêm **câu hỏi tùy chỉnh** để thu thập bất kỳ đầu vào bổ sung nào mà quá trình triển khai của bạn yêu cầu. Câu hỏi tùy chỉnh hỗ trợ cùng loại trường như câu hỏi hệ thống, cộng thêm một số loại tương tác cơ sở dữ liệu (đọc/ghi tới bất kỳ đối tượng VergeOS nào).

### Các loại câu hỏi phổ biến

| Loại              | Mục đích                          | Ví dụ sử dụng                            |
| ----------------- | --------------------------------- | ---------------------------------------- |
| **Chuỗi**         | Trường nhập văn bản một dòng      | Tên khách hàng, tên máy chủ              |
| **Vùng văn bản**  | Trường nhập văn bản nhiều dòng    | Ghi chú, đoạn cấu hình                   |
| **Mật khẩu**      | Trường nhập ẩn danh có xác nhận   | Mật khẩu tài khoản dịch vụ               |
| **Số**            | Trường nhập số                    | Số cổng, số lượng phiên bản              |
| **Đúng/Sai**      | Hộp kiểm (đúng/sai)               | Bật/tắt tính năng                        |
| **Danh sách**     | Chọn từ danh sách thả xuống       | Chọn từ các tùy chọn được xác định trước |
| **Ẩn**            | Không hiển thị trên biểu mẫu      | Giá trị mã cứng cho script               |
| **Mạng**          | Bộ chọn mạng                      | Chọn mạng đích                           |
| **Địa chỉ IP ảo** | Bộ chọn địa chỉ IP                | Gán IP cụ thể                            |
| **RAM**           | Trường nhập bộ nhớ (tính bằng MB) | Phân bổ thêm tài nguyên                  |
| **Cụm**           | Bộ chọn cụm                       | Cụm đích để đặt                          |

### Các loại tương tác với cơ sở dữ liệu

Các loại câu hỏi nâng cao này cho phép mẫu **đọc từ và ghi vào cơ sở dữ liệu VergeOS** trong quá trình tạo thuê bao — cho phép các quy trình tự động như:

| Loại                        | Mục đích                                        | Ví dụ sử dụng                                |
| --------------------------- | ----------------------------------------------- | -------------------------------------------- |
| **Tạo cơ sở dữ liệu**       | Tạo một bản ghi mới trong cơ sở dữ liệu VergeOS | Đăng ký một đặt chỗ DHCP, tạo một mục DNS    |
| **Chỉnh sửa cơ sở dữ liệu** | Sửa đổi một bản ghi cơ sở dữ liệu hiện có       | Cập nhật cấu hình mạng, thay đổi một cài đặt |
| **Tìm trong cơ sở dữ liệu** | Tra cứu giá trị từ cơ sở dữ liệu                | Lấy IP khả dụng tiếp theo, tìm ID mạng       |

Mỗi câu hỏi cơ sở dữ liệu bao gồm một **Ngữ cảnh cơ sở dữ liệu** trường xác định liệu thao tác có nhắm tới **cơ sở dữ liệu của hệ thống cha** hay **cơ sở dữ liệu của thuê bao mới được tạo**. Sự phân biệt này là rất quan trọng:

* **Ngữ cảnh cha:** Đăng ký IP của thuê bao trong DNS của máy chủ, tạo một đặt chỗ DHCP trên mạng của máy chủ
* **Ngữ cảnh thuê bao:** Cấu hình các cài đặt bên trong chính thuê bao mới

{% hint style="info" %}
Các câu hỏi tương tác cơ sở dữ liệu tham chiếu các bảng API VergeOS. Hãy xem [Mô tả Bảng API](https://docs.verge.io/knowledge-base/api-tables-description) và [Hướng dẫn API](https://docs.verge.io/knowledge-base/verge-api-guide) để biết tên bảng, tên trường và cú pháp bộ lọc.
{% endhint %}

## Chỉnh sửa và xuất bản lại các mẫu

Khi bạn sửa đổi một mẫu (thay đổi câu hỏi, cập nhật thuê bao cơ sở, điều chỉnh giá trị mặc định), các thay đổi **không khả dụng ngay** cho người dùng. Bạn phải **xuất bản lại** mẫu:

1. Thực hiện các thay đổi của bạn trên bảng điều khiển mẫu (chỉnh sửa câu hỏi, cập nhật các phần, v.v.)
2. Một banner xuất hiện ở đầu trang: *"Mẫu phải được xuất bản lại để các thay đổi có hiệu lực"*
3. Nhấp **Xuất bản lại** (từ liên kết trên banner hoặc menu bên trái)
4. Số phiên bản sẽ tự động tăng (ví dụ: `1.0.0-1` → `1.0.0-2`)

Khi một mẫu được xuất bản lại, **các hệ thống từ xa và các thuê bao có quyền truy cập** sẽ nhận được thông báo rằng có bản cập nhật để tải xuống. Họ phải tải xuống bản cập nhật một cách rõ ràng để dùng phiên bản mới.

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

Một **phiên bản** là một thuê bao được tạo từ một mẫu và vẫn còn liên kết với nó. Bạn có thể xem tất cả các phiên bản từ bảng điều khiển mẫu bằng cách nhấp vào **Phiên bản** trên menu bên trái.

Các quy tắc chính đối với phiên bản:

* Một mẫu **không thể bị xóa** khi nó còn các phiên bản liên kết
* Các phiên bản có thể **được tách rời** khỏi mẫu của chúng để trở thành các thuê bao độc lập
* Các thuê bao đã tách rời mất liên kết với mẫu nhưng vẫn giữ nguyên toàn bộ cấu hình

## Trao đổi mẫu: Chia sẻ giữa các hệ thống

Các mẫu được tổ chức thành **kho lưu trữ** và **danh mục**, tạo thành một cấu trúc phân cấp:

```mermaid
graph TD
    R["Kho lưu trữ"] --> C1["Danh mục A<br/>(thuê bao Windows)"]
    R --> C2["Danh mục B<br/>(thuê bao Linux)"]
    R --> C3["Danh mục C<br/>(Dịch vụ lưu trữ)"]
    C1 --> TR1["Mẫu thuê bao 1"]
    C1 --> TR2["Mẫu thuê bao 2"]
    C2 --> TR3["Mẫu thuê bao 3"]
    C3 --> TR4["Mẫu thuê bao 4"]

    style R fill:#e8eaf6,stroke:#283593
    style C1 fill:#e3f2fd,stroke:#1565c0
    style C2 fill:#e3f2fd,stroke:#1565c0
    style C3 fill:#e3f2fd,stroke:#1565c0
```

### Các loại kho lưu trữ

* **Kho lưu trữ cục bộ:** Các danh mục và mẫu được tạo và duy trì trên hệ thống cục bộ. Mỗi hệ thống VergeOS đều đi kèm một kho lưu trữ "Local" trống sẵn sàng sử dụng.
* **Kho lưu trữ từ xa:** Kết nối tới các danh mục được lưu trữ trên một hệ thống VergeOS khác. Điều này loại bỏ việc phải duy trì cùng một mẫu ở nhiều nơi.
* **Marketplace:** Một kho lưu trữ từ xa do VergeOS cung cấp, được cài sẵn trên các hệ thống cấp máy chủ, chứa các mẫu VM sẵn sàng sử dụng. Theo mặc định, các danh mục Marketplace được đặt thành `scope=global`, khiến chúng khả dụng cho tất cả các thuê bao.

### Phạm vi xuất bản danh mục

| Phạm vi      | Khả dụng                                                                                    |
| ------------ | ------------------------------------------------------------------------------------------- |
| **Riêng tư** | Chỉ hệ thống VergeOS cục bộ                                                                 |
| **Không**    | Đã tắt — không khả dụng ở bất kỳ đâu                                                        |
| **Tenant**   | Hệ thống cục bộ và các thuê bao trực tiếp của nó                                            |
| **Toàn cục** | Hệ thống cục bộ, các thuê bao và các hệ thống VergeOS bên ngoài (có thông tin xác thực API) |

### Chia sẻ với tenant

1. Đặt phạm vi xuất bản của danh mục thành **Tenant** hoặc **Toàn cục**
2. Trong giao diện của thuê bao, điều hướng đến **Nhà cung cấp dịch vụ** kho lưu trữ
3. Nhấp **Làm mới** để khám phá các danh mục khả dụng
4. Tải xuống các mẫu mong muốn — trạng thái hiển thị *Trực tuyến* khi sẵn sàng

### Chia sẻ với hệ thống từ xa

1. Tạo một **người dùng kiểu API** trên hệ thống chia sẻ với quyền List/Read trên danh mục đích
2. Trên hệ thống nhận, tạo một **Kho lưu trữ từ xa** trỏ đến URL của hệ thống chia sẻ
3. Xác thực bằng thông tin xác thực của người dùng API
4. Làm mới kho lưu trữ để phát hiện và tải xuống các danh mục và mẫu khả dụng

Khi các mẫu được cập nhật tại nguồn, cả các thuê bao lẫn hệ thống từ xa đều thấy một thông báo rằng có bản cập nhật sẵn sàng để tải xuống.

## Ví dụ thực tế: Dịch vụ lưu trữ tương thích S3 của CSP

Để minh họa sức mạnh của mẫu thuê bao, hãy xem xét tình huống này từ [Kiến trúc tham chiếu CSP của VergeOS](https://docs.verge.io/reference-architecture/csp/):

**CloudHoster**, một nhà cung cấp đám mây quy mô vừa, muốn cung cấp dịch vụ lưu trữ tương thích S3 có tên "Cloud Storage" cho khách hàng của họ. Thay vì phải cấu hình thủ công môi trường của từng khách hàng, họ xây dựng một mẫu thuê bao tự động hóa toàn bộ quá trình triển khai:

### Mẫu tạo ra những gì

1. **Tenant** — Một VDC mới với tài nguyên tính toán và lưu trữ phù hợp
2. **Mạng nội bộ** — Mạng cô lập cho VM ứng dụng lưu trữ
3. **Quy tắc tường lửa** — Được cấu hình để cho phép lưu lượng API S3 nhưng chặn mọi thứ khác
4. **VM lưu trữ** — VM chạy ứng dụng lưu trữ tương thích S3, đã được cấu hình sẵn
5. **Cấp phát lưu trữ** — Tầng lưu trữ vSAN chuyên dụng được phân bổ cho thuê bao
6. **Đăng ký DNS/DHCP** — Tự động đăng ký trên mạng của máy chủ

### Câu hỏi của mẫu cho trường hợp sử dụng này

Mẫu sẽ yêu cầu người vận hành (hoặc cổng tự phục vụ của khách hàng) cung cấp:

* **Tên khách hàng và URL** (Phần thuê bao)
* **Thông tin đăng nhập quản trị** (tự động tạo hoặc thủ công)
* **Dung lượng lưu trữ** (câu hỏi tùy chỉnh — cần cấp phát bao nhiêu dung lượng lưu trữ S3)
* **IP bên ngoài** (Phần mạng — cho điểm cuối API S3)
* **Tài nguyên nút** (Phần nút — CPU/RAM cho VM lưu trữ)

Chỉ với một lần gửi biểu mẫu, CloudHoster triển khai một môi trường lưu trữ tương thích S3 hoàn chỉnh, cô lập cho khách hàng của họ — trong vài phút thay vì vài giờ.

### Mở rộng dịch vụ

CloudHoster triển khai mẫu này trên bốn địa điểm của họ bằng cách chia sẻ danh mục qua một kho lưu trữ từ xa. Khi họ cập nhật mẫu (ví dụ: nâng cấp VM ứng dụng lưu trữ), tất cả các địa điểm sẽ nhận được thông báo và có thể kéo bản cập nhật về.

## Thực hành tốt nhất

### Thiết kế mẫu

* **Bắt đầu đơn giản** — hãy xây dựng trước một tenant cơ sở tối thiểu, rồi tăng dần độ phức tạp
* **Hãy dùng tên biến mô tả rõ ràng** — `STORAGE_CAPACITY_GB` tốt hơn `Q1` để bảo trì script
* **Hãy lập tài liệu cho các recipe của bạn** — hãy dùng trường Description và Note Text trong các câu hỏi để hướng dẫn người vận hành
* **Kiểm thử bằng mô phỏng** — hãy xác thực các câu hỏi và đầu ra trước khi xuất bản lên các catalog sản xuất

### Bảo trì tenant cơ sở

* **Các tenant cơ sở chuyên dụng** — đừng bao giờ dùng tenant cơ sở của một recipe cho các workload sản xuất
* **Kiểm soát phiên bản** — hãy đặt thủ công các số phiên bản chính (ví dụ, `2.0.0`) khi thực hiện các thay đổi đáng kể đối với tenant cơ sở
* **Loại bỏ dữ liệu nhạy cảm** — đảm bảo không có mật khẩu, dữ liệu hoặc cấu hình dành riêng cho khách hàng nào tồn tại trong tenant cơ sở

### Tổ chức

* **Tên catalog có ý nghĩa** — hãy nhóm các recipe theo mục đích (ví dụ: "Standard VDC", "GPU Compute", "Storage Services")
* **Sử dụng biểu tượng** — các biểu tượng Font Awesome giúp người vận hành nhanh chóng nhận diện các loại recipe trong giao diện người dùng
* **Xác định phạm vi phù hợp** — dùng Private cho các recipe chỉ nội bộ, Tenant cho các recipe hướng tới khách hàng, Global cho phân phối đa site

{% hint style="info" %}
**Bạn đang chuyển từ VMware hay Nutanix?**

Một recipe tenant của VergeOS cung cấp toàn bộ một VDC cô lập chỉ trong một thao tác duy nhất — giao diện quản lý, người dùng, ngăn xếp mạng, quy tắc tường lửa, lưu trữ và DNS/DHCP — không chỉ là các VM hay ứng dụng. Đối với phạm vi và khả năng của bất kỳ công cụ tự động hóa VMware hoặc Nutanix nào mà bạn có thể đang so sánh, hãy tham khảo tài liệu hiện tại của nhà cung cấp đó.
{% endhint %}


---

# 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/learn-the-platform/vi/mo-dun-7-da-thue-bao/03-tenant-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.
