> 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/tenant-recipes.md).

# Recipe tenant

Công thức tenant cho phép tự động hóa việc triển khai tenant. Một công thức tenant có thể bao gồm mọi thứ cần thiết để tạo ra một phiên bản tenant mới hoàn chỉnh và hoạt động đầy đủ, bao gồm: cài đặt tenant, cấu hình mạng, các máy ảo được bao gồm, và tự động hóa cho các tác vụ như tạo mật khẩu ngẫu nhiên, thiết lập hostname/mật khẩu/tên người dùng duy nhất, đăng ký các mục DHCP và DNS, gửi thông báo, v.v. Trang này sẽ hướng dẫn bạn quy trình cơ bản để tạo và sử dụng công thức tenant.

**Lợi ích của việc sử dụng công thức tenant:**

* Triển khai nhanh toàn bộ tenant
* Tính nhất quán giữa các cấu hình tenant
* Giảm thời gian thiết lập thủ công, từ đó giảm khả năng xảy ra lỗi do con người
* Ảnh mẫu chuẩn để tuân thủ

## Tạo một công thức tenant

1. **Xây dựng một tenant để làm mẫu cơ sở.** Một công thức tenant được dựa trên một tenant đóng vai trò là mẫu ban đầu. Hãy tạo tenant bao gồm các cài đặt, VM và mạng nên thuộc cấu hình chung. Tenant phải được tắt nguồn trước khi tạo công thức.

{% hint style="success" %}
**Một tenant được dùng làm nền tảng của một công thức nên được dành riêng cho mục đích này. Nếu bạn muốn tạo công thức từ một tenant đang được sử dụng, bạn có thể nên làm việc từ một bản sao của tenant gốc. Hãy chắc chắn loại bỏ mọi thông tin cụ thể, chẳng hạn như mật khẩu, tên người dùng cụ thể, dữ liệu khách hàng, v.v. khỏi phiên bản tenant đã sao chép trước khi sử dụng nó làm mẫu công thức.**
{% endhint %}

2. Đi tới **Bảng điều khiển Công thức tenant** (Kho lưu trữ > Công thức tenant).
3. Nhấp **Mới** ở menu bên trái.
4. Cấu hình công thức tenant **các trường:**

   * **Tên:** Dùng một tên xác định công thức một cách phù hợp để giúp người dùng dễ tìm các công thức thích 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 tại đâ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à mọi hướng dẫn chung.
   * **Biểu tượng:** (tùy chọn) có thể gán một biểu tượng Font Awesome cho công thức. Biểu tượng có thể giúp người dùng dễ dàng nhận diện các công thức/loại công thức khác nhau. Danh sách các biểu tượng có sẵn tại [FontAwesome](https://fontawesome.com/v4/icons/) .
   * **Danh mục:** Chọn một danh mục để lưu công thức. Danh mục rất hữu ích để giữ cho các công thức được tổ chức. Xem [Tổ chức công thức](/automate-protect-and-extend/vi/tu-dong-hoa/recipes-organization.md) để biết thêm thông tin về danh mục.
   * **Tenant:** Chọn tenant sẽ đóng vai trò là nền tảng của công thức.
   * **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. Mặc định là 1.0.0, nhưng có thể thay đổi nếu bạn muốn bắt đầu phiên bản với một số khác.

   <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>

   * **Giữ lại chứng chỉ SSL:** Khi được chọn, các chứng chỉ SSL được cài đặt trong tenant cơ sở sẽ được sao chép sang các phiên bản tenant được tạo bằng công thức.
   * **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 một hệ thống từ xa sử dụng một công thức mà nó không thể đáp ứng).
5. Nhấp **Gửi** để lưu công thức. Bảng điều khiển công thức tenant sẽ hiển thị nơi các câu hỏi của công thức có thể được tùy chỉnh.

## Câu hỏi

Các câu hỏi cung cấp giá trị tùy chỉnh cho từng tenant được tạo bằng công thức, bằng cách thu thập đầu vào từ người dùng hoặc tương tác với cơ sở dữ liệu VergeOS. Một công thức tenant sẽ tự động bao gồm các câu hỏi hệ thống. Một số câu hỏi này bị tắt theo mặc định và sẽ cần được bật nếu bạn muốn sử dụng chúng.

**(Tùy chọn) Bật câu hỏi mặc định bị vô hiệu hóa:**\
Nhấp **Câu hỏi** (menu bên trái hoặc thẻ 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.

{% hint style="success" %}
**Các câu hỏi hệ thống có thể bị tắt, nhưng không thể xóa.**
{% endhint %}

Để 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:** Các mục cho phép bạn nhóm các câu hỏi trên biểu mẫu nhập. Một số mục được tạo tự động và bạn có thể tạo thêm các mục cho câu hỏi của mình từ bảng điều khiển công thức tenant.
* **Tên:** đóng vai trò là tên biến có thể được tham chiếu trong script; hãy dùng tên mô tả để hỗ trợ bảo trì và khắc phục sự cố script; 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: thông qua đầu vào của người dùng, tương tác với cơ sở dữ liệu VergeOS, v.v.
* **ID thứ tự:** được dùng để xác định thứ tự hiển thị của các câu hỏi trong mục đã chọn.
* **Hiển thị:** nhãn văn bản hiển thị trên biểu mẫu nhập của người dùng cho câu hỏi
* **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.

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

Một số loại câu hỏi cho phép bạn tra cứu thông tin cơ sở dữ liệu hoặc tạo/chỉnh sửa các bản ghi cơ sở dữ liệu. Hãy chú ý đến văn bản giữ chỗ (văn bản màu xám hiển thị dữ liệu nhập ví dụ) khi cấu hình các câu hỏi tương tác với cơ sở dữ liệu để tham khảo gợi ý. Các bài viết trong Trung tâm kiến thức này cung cấp thêm thông tin về làm việc với cơ sở dữ liệu VergeOS: [Mô tả các bảng API](/knowledge-base/vi/automation-api/api-tables-description.md) và [Hướng dẫn API](/knowledge-base/vi/automation-api/verge-api-guide.md)

#### Ngữ cảnh cơ sở dữ liệu

Danh sách *Ngữ cảnh cơ sở dữ liệu* trường cho phép bạn chọn tương tác với cơ sở dữ liệu cục bộ (hệ thống cha) hoặc cơ sở dữ liệu của tenant mới được tạo. Điều này áp dụng cho các loại câu hỏi: *Tạo cơ sở dữ liệu, Chỉnh sửa cơ sở dữ liệu và Tìm cơ sở dữ liệu*.

### Tham chiếu câu hỏi hệ thống

Khi một công thức tenant được tạo, hệ thống tự động tạo ra một bộ câu hỏi tích hợp sẵn được tổ chức thành các mục. Nhiều câu hỏi trong số này là **bị tắt theo mặc định** và phải được bật nếu bạn muốn sử dụng chúng. Các câu hỏi hệ thống không thể bị xóa, nhưng có thể được bật hoặc tắt.

Để bật một câu hỏi hệ thống đã bị tắt: điều hướng đến **Câu hỏi** (menu bên trái hoặc thẻ 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.

#### Mục Tenant

Những câu hỏi này kiểm soát các cài đặt cốt lõi của tenant như danh tính, thông tin đăng nhập quản trị và cấu hình SSL.

| Tên                          | Hiển thị                   | Kiểu         | 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       | Luận lý      | false     | Không                  |
| YB\_EXPOSE\_CLOUD\_SNAPSHOTS | Hiển thị ảnh chụp hệ thống | Luận lý      | 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ỉ\_host | 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             | Miền của 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                  |

#### Mục Nodes

Những câu hỏi này xác định các tài nguyên tính toán được phân bổ cho node(s) của tenant.

| Tên                            | Hiển thị            | Kiểu | Mặc định | Được bật theo mặc định |
| ------------------------------ | ------------------- | ---- | -------- | ---------------------- |
| YB\_NODE\_1\_CPU\_CORES        | Số lõi Node 1       | Số   | 8        | Có                     |
| YB\_NODE\_1\_RAM               | RAM Node 1          | RAM  | 16384    | Có                     |
| YB\_NODE\_1\_INSTANCES         | Số phiên bản Node 1 | Số   | 1        | Không                  |
| YB\_NODE\_1\_CLUSTER           | Cụm Node 1          | Cụm  |          | Không                  |
| YB\_NODE\_1\_CLUSTER\_FAILOVER | Cụm dự phòng Node 1 | Cụm  |          | Không                  |

#### Mục Mạng

Những câu hỏi này cấu hình các địa chỉ mạng của tenant.

| Tên            | Hiển thị                | Kiểu          | Mặc định | Được bật theo mặc định |
| -------------- | ----------------------- | ------------- | -------- | ---------------------- |
| YB\_NET\_1\_IP | Địa chỉ IP giao diện UI | Đị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 dữ liệu như ngày hết hạn, hostname tùy chỉnh hoặc các giá trị cụ thể khác của tenant.**
{% endhint %}

## Sửa một công thức

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 từ xa và các tenant có quyền truy cập vào công thức sẽ được thông báo rằng có bản cập nhật mới (thông báo ở đầu bảng điều khiển công thức tenant và hộp kiểm 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 tenant

### Tạo tenant từ công thức

1. Từ menu trên cùng, điều hướng đến **Tenant** > **+ Tenant mới**.
2. Nhấp vào công thức mong muốn **danh mục** từ phần danh mục ở bên trái.
3. Các công thức tenant riêng lẻ có sẵn trong danh mục đã chọn sẽ xuất hiện ở bên phải. **Chọn công thức mong muốn** và nhấp **Tiếp theo** ở cuối màn hình.
4. Các trường nhập được hiển thị theo cách được xác định bởi các câu hỏi của công thức.
5. Nhập/Cấu hình các trường và nhấp vào **Gửi** để tạo tenant mới. Cấu hình câu hỏi của công thức sẽ xác định các trường bắt buộc và các xác thực khác của trường.

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

Một instance là một tenant cụ thể được liên kết với một công thức tenant. Khi một tenant được tạo từ một công thức, nó được coi là một instance của công thức cho đến khi nó bị xóa hoặc được tách khỏi công thức.

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

Công thức cho phép rất nhiều giải pháp tiềm năng khác nhau. Hãy liên hệ Bộ phận Hỗ trợ VergeOS để được trợ giúp thêm trong việc tự động hóa triển khai tenant của bạn bằng công thức.


---

# 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/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.
