说明:
演练流程
创建演练:通过经验创建
准备经验 ID
方式一:控制台获取
方式二:API 获取
接口请求
POST / HTTP/
1.1
Host
:
cfg.tencentcloudapi.com
Content-Type
:
application/json
X-TC-Action
:
CreateTaskFromTemplate
<公共请求参数>
{
"TemplateId"
:
626
,
# 上步查询到的经验 ID
"TaskConfig"
:
{
"TaskTitle"
:
"这是一个从 API 创建演练的示例"
,
# 演练名称,不填默认取经验名称
"TaskGroupsConfig"
:
[
{
"TaskGroupInstances"
:
[
"ins-xxxxxxxx"
# 动作组关联的实例对象 ID,例如 CVM
,
CLB 等资源 ID
]
}
]
}
}
接口输出
{
"Response"
:
{
"RequestId"
:
"f0aee8ac-2ed3-4a7f-a25b-f0d7d228dd30"
,
"TaskId"
:
3256
# 演练 ID
}
}
创建演练:通过动作创建
准备资源对象 ID
准备动作 ID
准备动作参数
说明:
这里提供了两个参数,用于创建动作演练:
TaskActionGeneralConfiguration:通用参数,可选择性传入, 为空时则使用动作默认参数。
TaskActionCustomConfiguration:自定义参数。对于可选参数,已设置默认值。对于必选参数,如果默认值为空,则必须显式传递。
参数应以`{"key1": "value1", "key2": "value2"}`的形式表示,并需要序列化后传入,例如:`"{\\"domain\\": \\"www.test.com\\"}"`。
动作参数具体作用,可以参考控制台,比较直观。
此接口返回如下:
{"Response": {"RequestId": "3e7fa74e-9045-4f01-88d4-ee158affe905","Common": [ # 通用参数,对应后面动作创建演练中 TaskActionGeneralConfiguration{"ActionId": 466,"ActionName": "DNS篡改","ConfigDetail": [{"Type": "input","Lable": "动作别名","Field": "AliasTitle", # 动作参数 key"DefaultValue": "", # 动作参数默认值"Config": "{}","Required": 0, # 是否必填 (0 -- 否 1-- 是)"Validate": "{}","Visible": "{}"},{"Type": "number","Lable": "前置等待时间(s)","Field": "PreTimeWait","DefaultValue": "0","Config": "{\\"max\\": 86400, \\"min\\": 0, \\"tooltip\\": \\"仅限用于自动推进模式\\"}","Required": 0,"Validate": "{}","Visible": "{}"},{"Type": "number","Lable": "后置等待时间(s)","Field": "AfterTimeWait","DefaultValue": "0","Config": "{\\"max\\": 86400, \\"min\\": 0, \\"tooltip\\": \\"仅限用于自动推进模式\\"}","Required": 0,"Validate": "{}","Visible": "{}"},{"Type": "number","Lable": "动作超时时间(s)","Field": "ActionTimeout","DefaultValue": "1800","Config": "{\\"max\\": 86400, \\"min\\": 0, \\"tooltip\\": \\"动作的超时时间\\"}","Required": 0,"Validate": "{}","Visible": "{\\"op\\": \\"<\\", \\"type\\": \\"need_insert\\", \\"value\\": 0, \\"relatedField\\": \\"ActionTimeout\\"}"}]}],"Results": [ # 自定义参数,对应后面动作创建演练中 TaskActionCustomConfiguration{"ActionId": 466,"ActionName": "DNS篡改","ConfigDetail": [{"Type": "number","Lable": "持续时间(s)","Field": "duration","DefaultValue": "180","Config": "{\\"max\\": 1800, \\"min\\": 0}","Required": 1,"Validate": "{}","Visible": "{}"},{"Type": "input","Lable": "域名","Field": "domain", # 动作参数 key"DefaultValue": "", # 动作参数默认值"Config": "{}","Required": 1, # 是否必填 (0 -- 否 1-- 是)"Validate": "{}","Visible": "{}"},{"Type": "input","Lable": "IP","Field": "ip","DefaultValue": "","Config": "{}","Required": 1,"Validate": "{}","Visible": "{}"}]}],"ResourceOffline": []}}
接口请求
注意:
对于容器类资源对象,需要 {ClusterId} + {NodeName} + {NameSpace} + {PodName} 四元组才能确定一个唯一的实例。在参数 TaskInstances 传入时,需要将这个 map 序列化。
例如:"{"ClusterId":"cls-xxxx","PodName":"pod-xxxxxx","NodeName":"xxxxxxxx","NameSpace":"default-xxxxxx"}"
POST / HTTP/
1.1
Host
:
cfg.tencentcloudapi.com
Content-Type
:
application/json
X-TC-Action
:
CreateTaskFromTemplate
<公共请求参数>
{"TaskActionId": 462, # 动作 ID"TaskInstances": ["ins-xxxxxxxx
"], # 资源对象实例 ID"TaskTitle": "网络丢包", # 演练名称"TaskDescription": "这是从openapi创建的演练", # 演练描述"TaskActionCustomConfiguration": "{\\"interfaces\\": \\"eth0\\"}" # 动作自定义参数,需要序列化}
接口输出
{"Response": {"RequestId": "f0aee8ac-2ed3-4a7f-a25b-f0d7d228dd30","TaskId": 150}}
此时,点击控制台演练管理,则可以看到创建好的演练任务,也可以通过接口查询。
说明:
查询演练
接口请求
POST / HTTP/
1.1
Host
:
cfg.tencentcloudapi.com
Content-Type
:
application/json
X-TC-Action
:
DescribeTask
<公共请求参数>
{
”RequestId“
:
"02185fc4-0e8f-49ed-a8d5-6d0788d0e60c"
,
"TaskId"
:
"3256"
# 上述创建演练时返回的演练 ID
}
接口输出
{
"RequestId"
:
"02185fc4-0e8f-49ed-a8d5-6d0788d0e60c"
,
"Task"
:
{
"TaskId"
:
3256
,
"TaskTitle"
:
"这是一个从API创建演练的示例"
,
"TaskDescription"
:
"测试一个空动作"
,
"TaskTag"
:
""
,
"TaskStatus"
:
1002
,
"TaskStatusType"
:
0
,
"TaskProtectStrategy"
:
null
,
"TaskCreateTime"
:
"2023-08-14 11:55:02"
,
"TaskUpdateTime"
:
"2023-08-14 14:48:00"
,
"TaskStartTime"
:
"2023-08-14 14:48:01"
,
"TaskEndTime"
:
null
,
"TaskExpect"
:
null
,
"TaskSummary"
:
null
,
"TaskMode"
:
1
,
"TaskRegionId"
:
1
,
"TaskPauseDuration"
:
60
,
"TaskOwnerUin"
:
"100032429988"
,
"TaskPlanId"
:
null
,
"TaskPlanTitle"
:
null
,
"TaskGroups"
:
[
{
"TaskGroupActions"
:
[
{
"TaskGroupInstances"
:
[
{
"TaskGroupInstanceId"
:
24375
,
# 任务动作实例 ID
"TaskGroupInstanceObjectId"
:
"ins-bfydnvta"
,
# 资源对象 ID
"TaskGroupInstanceStatus"
:
3001
,
"TaskGroupInstanceStatusType"
:
0
,
"TaskGroupInstanceExecuteLog"
:
null
,
"TaskGroupInstanceStartTime"
:
null
,
"TaskGroupInstanceEndTime"
:
null
,
"TaskGroupInstanceCreateTime"
:
"2023-08-14 14:48:00"
,
"TaskGroupInstanceUpdateTime"
:
"2023-08-14 14:48:00"
,
"TaskGroupInstanceIsRedo"
:
false
,
"TaskGroupInstanceExecuteTime"
:
null
}
,
{
"TaskGroupInstanceId"
:
24376
,
# 任务动作实例 ID
"TaskGroupInstanceObjectId"
:
"ins-ehxmry76"
,
# 资源对象 ID
"TaskGroupInstanceStatus"
:
3001
,
"TaskGroupInstanceStatusType"
:
0
,
"TaskGroupInstanceExecuteLog"
:
null
,
"TaskGroupInstanceStartTime"
:
null
,
"TaskGroupInstanceEndTime"
:
null
,
"TaskGroupInstanceCreateTime"
:
"2023-08-14 14:48:00"
,
"TaskGroupInstanceUpdateTime"
:
"2023-08-14 14:48:00"
,
"TaskGroupInstanceIsRedo"
:
false
,
"TaskGroupInstanceExecuteTime"
:
null
}
]
,
"TaskGroupActionId"
:
11395
,
# 任务动作 ID
"ActionId"
:
12
,
"ActionTitle"
:
"空操作"
,
"ActionApiType"
:
1
,
"ActionType"
:
"平台"
,
"ActionRisk"
:
"低风险"
,
"ActionAttribute"
:
1
,
"TaskGroupActionOrder"
:
1
,
"TaskGroupActionGeneralConfiguration"
:
"{\\"AliasTitle\\": \\"\\", \\"PreTimeWait\\": 0, \\"ActionTimeout\\": 1800, \\"AfterTimeWait\\": 0}"
,
"TaskGroupActionCustomConfiguration"
:
"{}"
,
"TaskGroupActionStatus"
:
2002
,
"TaskGroupActionStatusType"
:
0
,
"TaskGroupActionRandomId"
:
156878
,
"TaskGroupActionRecoverId"
:
193278
,
"TaskGroupActionExecuteId"
:
null
,
"TaskGroupActionCreateTime"
:
"2023-08-14 11:55:02"
,
"TaskGroupActionUpdateTime"
:
"2023-08-14 14:48:00"
,
"IsExecuteRedo"
:
false
,
"TaskGroupActionExecuteTime"
:
null
}
,
{
"TaskGroupInstances"
:
[
{
"TaskGroupInstanceId"
:
24377
,
# 任务动作实例 ID
"TaskGroupInstanceObjectId"
:
"ins-bfydnvta"
,
# 资源对象 ID
"TaskGroupInstanceStatus"
:
3001
,
"TaskGroupInstanceStatusType"
:
0
,
"TaskGroupInstanceExecuteLog"
:
null
,
"TaskGroupInstanceStartTime"
:
null
,
"TaskGroupInstanceEndTime"
:
null
,
"TaskGroupInstanceCreateTime"
:
"2023-08-14 14:48:00"
,
"TaskGroupInstanceUpdateTime"
:
"2023-08-14 14:48:00"
,
"TaskGroupInstanceIsRedo"
:
false
,
"TaskGroupInstanceExecuteTime"
:
null
}
,
{
"TaskGroupInstanceId"
:
24378
,
# 任务动作实例 ID
"TaskGroupInstanceObjectId"
:
"ins-ehxmry76"
,
# 资源对象 ID
"TaskGroupInstanceStatus"
:
3001
,
"TaskGroupInstanceStatusType"
:
0
,
"TaskGroupInstanceExecuteLog"
:
null
,
"TaskGroupInstanceStartTime"
:
null
,
"TaskGroupInstanceEndTime"
:
null
,
"TaskGroupInstanceCreateTime"
:
"2023-08-14 14:48:00"
,
"TaskGroupInstanceUpdateTime"
:
"2023-08-14 14:48:00"
,
"TaskGroupInstanceIsRedo"
:
false
,
"TaskGroupInstanceExecuteTime"
:
null
}
]
,
"TaskGroupActionId"
:
11396
,
# 任务动作ID
"ActionId"
:
13
,
"ActionTitle"
:
"空操作(回滚)"
,
"ActionApiType"
:
1
,
"ActionType"
:
"平台"
,
"ActionRisk"
:
"低风险"
,
"ActionAttribute"
:
2
,
"TaskGroupActionOrder"
:
2
,
"TaskGroupActionGeneralConfiguration"
:
"{\\"PreTimeWait\\": 0, \\"ActionTimeout\\": 1800, \\"AfterTimeWait\\": 0}"
,
"TaskGroupActionCustomConfiguration"
:
"{}"
,
"TaskGroupActionStatus"
:
2001
,
"TaskGroupActionStatusType"
:
0
,
"TaskGroupActionRandomId"
:
193278
,
"TaskGroupActionRecoverId"
:
null
,
"TaskGroupActionExecuteId"
:
156878
,
"TaskGroupActionCreateTime"
:
"2023-08-14 11:55:02"
,
"TaskGroupActionUpdateTime"
:
"2023-08-14 11:55:02"
,
"IsExecuteRedo"
:
false
,
"TaskGroupActionExecuteTime"
:
null
}
]
,
"TaskGroupId"
:
4684
,
# 动作组 ID
"TaskGroupTitle"
:
"abc"
,
"TaskGroupDescription"
:
"abc"
,
"TaskGroupOrder"
:
1
,
"TaskGroupMode"
:
1
,
"TaskGroupInstanceList"
:
[
"ins-bfydnvta"
,
"ins-ehxmry76"
]
,
"ObjectTypeId"
:
1
,
"TaskGroupCreateTime"
:
"2023-08-14 11:55:02"
,
"TaskGroupUpdateTime"
:
"2023-08-14 11:55:02"
,
"TaskGroupInstancesExecuteRule"
:
[
{
"TaskGroupInstancesExecuteMode"
:
1
}
]
,
"TaskGroupSelectedInstanceList"
:
[
"ins-bfydnvta"
,
"ins-ehxmry76"
]
,
"TaskGroupDiscardInstanceList"
:
[
]
}
]
,
"TaskMonitors"
:
[
]
,
"TaskPolicy"
:
null
,
"Tags"
:
[
]
}
,
"ReportInfo"
:
null
}
执行演练
接口请求
POST / HTTP/
1.1
Host
:
cfg.tencentcloudapi.com
Content-Type
:
application/json
X-TC-Action
:
ExecuteTask
<公共请求参数>
{
"TaskId"
:
"3256"
}
接口输出
{
"Response"
:
{
"RequestId"
:
"46924e75-a149-4130-aac0-853dbf0abea9"
}
}
执行动作
接口请求
POST / HTTP/
1.1
Host
:
cfg.tencentcloudapi.com
Content-Type
:
application/json
X-TC-Action
:
ExecuteTaskInstance
<公共请求参数>
{
"TaskId"
:
"3256"
,
"TaskActionId"
:
"11396"
,
# 任务动作 ID(从演练查询返回中获取)
"TaskInstanceIds"
:
[
"xxxxxxxx-01"
,
# 任务动作实例 ID(从演练查询返回中获取)
"xxxxxxxx-02"
]
,
"IsOperateAll"
:
true
,
# 是否执行整个任务,这里取
true
的时候,TaskInstanceIds 会被忽略,创建演练时传入的所有实例,都会被执行
"ActionType"
:
2
,
#
2--执行 3--跳过 5--重试
"TaskGroupId"
:
4684
,
# 动作组 ID(从演练查询返回中获取)
}
接口输出
{
"Response"
:
{
"RequestId"
:
"6549ed1a-911f-46dd-b6cd-2c02d5bd180f"
}
}
说明:
这里的动作执行,支持跳过和重试操作,可以通过调整
ActionType
的值来控制:3:跳过。
5:重试。
结束演练
接口请求
POST / HTTP/
1.1
Host
:
cfg.tencentcloudapi.com
Content-Type
:
application/json
X-TC-Action
:
ModifyTaskRunStatus
<公共请求参数>
{
"TaskId"
:
3256
,
# 演练任务 ID
"Status"
:
1004
,
# 结束状态码,不用修改
"Summary"
:
"本次演练符合预期"
,
#
演习结论
"IsExpect"
:
true
,
#
执行结果是否符合预期}
接口输出
{
"Response"
:
{
"RequestId"
:
"e38eca72-e4ae-4a86-9696-7df399e672bd"
}
}
说明: