Deploying a Stack Set
Function
DeployStackSet
This API deploys an existing stack set and returns the stack set operation ID (stack_set_operation_id).
- You can use this API to update the template and variables of a stack set and deploy it.
- This API directly triggers deployment of stack instances. You can deploy all stack instances in a stack set or a specified stack instance.
- This API needs you providing full templates and vars for each deployment.
- When the triggered deployment fails, the stack set does not automatically roll back the template and variables. However, the stack that fails to be deployed determines whether to roll back based on its rollback configuration. Stacks that have been deployed do not trigger rollback.
- You can obtain the stack set operation status by calling the ShowStackSetOperationMetadata API based on the stack set operation ID (stack_set_operation_id).
URI
POST /v1/stack-sets/{stack_set_name}/deployments
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
stack_set_name |
Yes |
String |
Stack set name. The name is unique within its domain (domain_id) and region. Only letters, digits, underscores (_), and hyphens (-) are allowed. The name is case-sensitive and must start with a letter. Minimum: 1 Maximum: 128 |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
Client-Request-Id |
Yes |
String |
Unique request ID. It is specified by a user and is used to locate a request. UUID is recommended. Minimum: 36 Maximum: 128 |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
stack_set_id |
No |
String |
Unique ID of a stack set. It is a UUID generated by RFS when a stack is created. Stack set names are unique only at one specific time, so you can create a stack set named HelloWorld and another stack set with the same name after deleting the first one. For parallel development in a team, users may want to ensure that the stack set they operate is the one created by themselves, not the one with the same name created by other teammates after deleting the previous one. Therefore, they can use this ID for strong matching. RFS ensures that the ID of each stack set is different and does not change with updates. If the stack_set_id value is different from the current stack set ID, 400 is returned. Minimum: 36 Maximum: 36 |
deployment_targets |
Yes |
deployment_targets object |
Deployment target information. |
template_body |
No |
String |
HCL template, which describes the target status of a resource. RFS compares the difference between the statuses of this template and the current remote resource. You can specify either template_body or template_uri, not both. Note:
Minimum: 0 Maximum: 51200 |
template_uri |
No |
String |
OBS address of an HCL template. The template describes the target status of a resource. RFS compares the difference between the statuses of this template and the current remote resource. The OBS address allows mutual access to regions of the same type. Regions are classified into universal regions and dedicated regions. A universal region provides universal cloud services for common tenants. A dedicated region provides specific services for specific tenants. The corresponding file must be a tf file or a zip package. A .tf file must be named with a .tf or .tf.json suffix, compatible with HCL, and UTF-8 encoded. Currently, only the .zip package is supported. The file name extension must be .zip. The decompressed files cannot contain .tfvars files. The maximum size of the file is 1 MB before decompression and 1 MB after decompression. A maximum of 100 files can be archived to one .zip package. You can specify either template_body or template_uri, not both. Note:
Minimum: 0 Maximum: 2048 |
vars_uri |
No |
String |
OBS address of the HCL parameter file. Transferring parameters is supported by the HCL template. The same template can use different parameters for different purposes. The OBS address allows mutual access to regions of the same type. Regions are classified into universal regions and dedicated regions. A universal region provides universal cloud services for common tenants. A dedicated region provides specific services for specific tenants.
The content in vars_uri uses the tfvars format of HCL. You can save the content in .tfvars to a file, upload the file to OBS, and transfer the pre-signed URL of OBS to vars_uri.
Minimum: 0 Maximum: 2048 |
vars_body |
No |
String |
Content of the HCL variable file. Transferring parameters is supported by the HCL template. The same template can use different parameters for different purposes.
Minimum: 0 Maximum: 51200 |
var_overrides |
No |
var_overrides object |
Variables that the user expects to update in the stack instance. Related variables will be overridden in all stack instances specified in this request, and the stack instances will be deployed based on the updated variables. The overwritten variables are permanently recorded in the stack instances and continue to be used in subsequent deployment until they are overridden in the next update. Only the variable set (vars) recorded in the stack set can be overridden. If a variable that does not exist in vars is specified, error code 400 is returned. If you want to add variables that can be overridden, use the DeployStackSet API to update the variable set (vars) recorded in the stack set. After the stack set variable set (vars) is updated through the DeployStackSet API, the overridden variables in the stack instance are not updated and the overridden values are retained. Variable overriding applies only to the variables specified by vars in the stack set, excluding the variables that use default values as defined in the template. If you want to override the variables that use the default values, use the DeployStackSet API to update the vars recorded in the stack set and explicitly define related variables in the vars. Each time a user use the DeployStackSet API to update the vars of the stack set, error code 400 is returned for loss of the overridden variables recorded in the stack instance deployed to any targets. (The current overridden variables are not a subset of the vars of the updated stack set.) In a new update, existing variables cannot be retained. Instead, all existing variables should be overridden. The total length of the overridden vars_body of the stack instance does not exceed 51,200. After variable overriding, the size of the vars_uri file of the stack instance does not exceed 1 MB. For example, the vars_body recorded in the stack set is "key1=value1, key2=value2...", and the new vars_body in the stack instance is "key1=another_value1". The length of the overridden vars_body "key1=another_value1, key2=value2...." cannot exceed 51,200. For example, the file content specified by the vars_uri recorded in the stack set is "key1=value1, key2=value2...", and that of the new vars_uri in the stack instance is "key1=another_value1". The size of the file specified by the overridden vars_body "key1=another_value1, key2=value2...." cannot exceed 1 MB. If var_overrides is not assigned, the variables recorded in the overridden stack instance are not updated. If you have assigned at least one of vars_uri, vars_body, and use_stack_set_vars, the variables will be updated through replacement. The new variables assigned by you override related variables in the specified stack instance. All variable sets declared in vars_body, vars_uri, and use_stack_set_vars must be consistent with those recorded in the stack set. Error code 400 is returned for the following scenarios: variables that do not exist in the stack set are declared, variables that have been recorded in the stack set are not declared, and duplicate variables are declared. Note:
|
operation_preferences |
No |
operation_preferences object |
The user-specified preferences for how to perform a stack set operation. This parameter takes effect only in a specified single operation. If this parameter is not specified, the default operation preferences is that only one stack is deployed at a time and after all stack instances in a region are deployed completely, the next region will be selected randomly for deployment. The default value of failure tolerance count in a region is 0. This parameter can be specified in the following APIs: CreateStackInstance, DeployStackSet, UpdateStackInstance, DeleteStackInstance. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
regions |
Yes |
Array of strings |
Regions involved in the stack set operations are specified by the user.
|
domain_ids |
No |
Array of strings |
When SELF_MANAGED permissions are used, the information about the tenant IDs involved in this operation is specified by the user.
You can specify either domain_ids or domain_ids_uri, but not both. Minimum: 1 Maximum: 64 |
domain_ids_uri |
No |
String |
When SELF_MANAGED permissions are used, the OBS address of the tenant IDs involved in this operation is specified by the user. Tenant IDs are separated by commas (,) and line breaks are supported. Currently, only CSV files are supported, and the files should be encoded in UTF-8. The file size cannot exceed 100 KB. Do not use Excel for operations on the CSV file to be uploaded. Otherwise, inconsistencies may occur in results read from the CSV file. You are advised to use Notepad to open the file and check whether the content complies with your expectation.
You can specify either domain_ids or domain_ids_uri, but not both. Minimum: 0 Maximum: 2048 |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
vars_uri |
No |
String |
OBS address of the HCL parameter file. Transferring parameters is supported by the HCL template. The same template can use different parameters for different purposes. The OBS address allows mutual access to regions of the same type. Regions are classified into universal regions and dedicated regions. A universal region provides universal cloud services for common tenants. A dedicated region provides specific services for specific tenants.
The content in vars_uri uses the tfvars format of HCL. You can save the content in .tfvars to a file, upload the file to OBS, and transfer the pre-signed URL of OBS to vars_uri.
Minimum: 0 Maximum: 2048 |
vars_body |
No |
String |
Content of the HCL variable file. Transferring parameters is supported by the HCL template. The same template can use different parameters for different purposes.
Minimum: 0 Maximum: 51200 |
use_stack_set_vars |
No |
Array of strings |
Names of the variables whose values are recorded in the stack set and expected to be used for deployment. You can select only the variables that have been recorded in the stack set. Otherwise, error code 400 is returned. If the use_stack_set_vars contains name of a variable that has been overridden in the stack instance, the value of the variable is rolled back to that recorded in the stack set. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
region_concurrency_type |
No |
String |
The concurrency type of deploying stack instances in regions. The value can be SEQUENTIAL (default) or PARALLEL. The value is case-sensitive. Detailed introduction:
Default: SEQUENTIAL Enumeration values:
|
region_order |
No |
Array of strings |
Region deployment order. This parameter can be specified only when region_concurrency_type is set to SEQUENTIAL. The region_order must only contain all regions in this deployment target. If this parameter is not specified, the region deployment order is random. The region_order takes effect only during a specified single operation. |
failure_tolerance_count |
No |
Long |
The maximum number of failed stack instances in a region. The value must be 0 or a positive integer. The default value is 0. If the value of region_concurrency_type is SEQUENTIAL, when the number of stack instances that deploy failed in a region exceeds the failure_tolerance_count, all other instances that are still in WAIT_IN_PROGRESS status will be canceled. The status of the canceled instance changes to CANCEL_COMPLETE; If the value of region_concurrency_type is PARALLEL, when the number of stack instances that deploy failed in a region exceeds the failure_tolerance_count, the stack set only cancels all instances that are still in WAIT_IN_PROGRESS status in this region. The status of the canceled instance changes to CANCEL_COMPLETE. Stack instances that are in OPERATION_IN_PROGRESS status or have been deployed (that is, in OPERATION_COMPLETE or OPERATION_FAILED status) are not affected. Only one of failure_tolerance_count and failure_tolerance_percentage can exist. Minimum: 0 Maximum: 100 |
failure_tolerance_percentage |
No |
Long |
The maximum percentage of failed stack instances in a region. The value must be 0 or a positive integer. The default value is 0. By multiplying the failure_tolerance_percentage by the number of stack instances in the region and rounding it down, the actual number of failure tolerance count can be obtained. Only one of failure_tolerance_count and failure_tolerance_percentage can exist. Minimum: 0 Maximum: 100 |
max_concurrent_count |
No |
Long |
The maximum number of concurrent accounts can be deployed in a region. The value must be a positive integer. The default value is 1. max_concurrent_count is at most one more than the failure tolerance count. If failure_tolerance_percentage is specified, max_concurrent_count is at most one more than the result of failure_tolerance_percentage multiplied by the number of stack instances in a region to guarantee that the deployment stops at the required level of failure tolerance. Only one of max_concurrent_count and max_concurrent_percentage can exist. Minimum: 1 Maximum: 5 |
max_concurrent_percentage |
No |
Long |
The maximum percentage of concurrent accounts can be deployed in a region. The value must be a positive integer. The default value is 1. The RFS calculates the actual maximum number of concurrent accounts by rounding down the value obtained by multiplying the percentage by the number of stack instances in each region. This actual maximum number of concurrent accounts is at most one more than the failure tolerance count. If failure_tolerance_percentage is specified, this actual maximum number of concurrent accounts is at most one more than the result of failure_tolerance_percentage multiplied by the number of stack instances in a region to guarantee that the deployment stops at the required level of failure tolerance. Only one of max_concurrent_count and max_concurrent_percentage can exist. Minimum: 1 Maximum: 100 |
failure_tolerance_mode |
No |
String |
The failure tolerance mode of deploying stack instances in regions. The value can be STRICT_FAILURE_TOLERANCE or SOFT_FAILURE_TOLERANCE. The default value is STRICT_FAILURE_TOLERANCE. The value is case-sensitive. Detailed introduction:
Default: STRICT_FAILURE_TOLERANCE Enumeration values:
|
Response Parameters
Status code: 202
Parameter |
Type |
Description |
---|---|---|
stack_set_operation_id |
String |
Unique ID of a stack set operation. It is a UUID generated by RFS when a stack set operation is created. Minimum: 36 Maximum: 36 |
Status code: 400
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code. Minimum: 11 Maximum: 11 |
error_msg |
String |
Response message. |
encoded_authorization_message |
String |
The message contains information about unauthorized requests. |
Status code: 401
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code. Minimum: 11 Maximum: 11 |
error_msg |
String |
Response message. |
encoded_authorization_message |
String |
The message contains information about unauthorized requests. |
Status code: 403
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code. Minimum: 11 Maximum: 11 |
error_msg |
String |
Response message. |
encoded_authorization_message |
String |
The message contains information about unauthorized requests. |
Status code: 404
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code. Minimum: 11 Maximum: 11 |
error_msg |
String |
Response message. |
encoded_authorization_message |
String |
The message contains information about unauthorized requests. |
Status code: 409
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code. Minimum: 11 Maximum: 11 |
error_msg |
String |
Response message. |
encoded_authorization_message |
String |
The message contains information about unauthorized requests. |
Status code: 429
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code. Minimum: 11 Maximum: 11 |
error_msg |
String |
Response message. |
encoded_authorization_message |
String |
The message contains information about unauthorized requests. |
Status code: 500
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code. Minimum: 11 Maximum: 11 |
error_msg |
String |
Response message. |
encoded_authorization_message |
String |
The message contains information about unauthorized requests. |
Example Requests
The following example shows how to pass template and parameter information using OBS Signed URL. Stack instances are deployed in sequential mode among regions.
POST https://{endpoint}/v1/stack-sets/my_hello_world_stack_set/deployments { "template_uri" : "https://{bucket_name}.{region}.myhuaweicloud.com/my-hello-world-template.tf", "vars_uri" : "https://{bucket_name}.{region}.myhuaweicloud.com/my-hello-world-vars.tfvars", "stack_set_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b4", "deployment_targets" : { "regions" : [ "region_id" ], "domain_ids" : [ "0e0bc7572c0dfb74efa6c60ecd7b1dbf" ] }, "operation_preferences" : { "region_concurrency_type" : "SEQUENTIAL" } }
Example Responses
Status code: 202
The request is accepted and processed asynchronously.
{ "stack_set_operation_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3" }
Status Codes
Status Code |
Description |
---|---|
202 |
The request is accepted and processed asynchronously. |
400 |
Invalid request. |
401 |
Authentication failed. |
403 |
|
404 |
The stack set does not exist. |
409 |
Request conflict. Another request is being processed on the current stack set. |
429 |
Too frequent requests. |
500 |
Internal server error. |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot