任務(Task)是模板中最重要的組成部分,它定義了每一個具體的運維操作,每一個任務的類型叫做動作。OOS提供了非常豐富的動作供您使用,這些動作包括了一些常見的云產品動作,如ECS,RDS等。如您需要其他云產品常見動作但是OOS暫未提供,您可以聯系我們并提供使用場景,另外還可以使用原子動作自行編寫,以便您能夠立即進行系統運維管理和執行。
通用屬性
任務在模板中的語法如下:
YAML格式
Tasks:
- Name: TaskName1 # 必填,任務名稱,有效字符為[a-zA-Z0-9_-],即英文字母數字下劃線中劃線,長度限制200個字符。建議使用駝峰式命名,如StartInstance。
When: Condition1 # 選填,通過對某條件判斷,確定是否執行該任務,當條件結果為true時執行該任務;當條件結果為false時,忽略該任務并向下執行。
Action: TaskType # 必填,任務類型(也叫動作),請參考動作相關的文檔。
Description: description # 可選,描述,描述當前任務的用途。
Properties: # 根據所使用的動作不同,具體的屬性列表不同,請參考動作相關的文檔。
Property1: Value1 # 動作所依賴的屬性和值。
Property2: Value2 # 當Property為Parameters時,則此處的傳入參數名稱定義參考原OpenApi。若原OpenApi所需參數中不含有“.”,則此處命名則為原參數名;若原OpenApi所需參數中含有“.”且不是Tag相關的,則參數命名時去除“.”,比如ModifyInstanceSpec Api中Temporary.InternetMaxBandwidthOut參數,則在此處的參數命名為TemporaryInternetMaxBandwidthOut;若原OpenApi所需參數中含有“.”是Tag相關的,則參數命名時,參數命名為Tags,形如 "Tags": [{"Key": tagKey1,"Value": tagValue1 }]。
Outputs: # 當前任務的輸出參數,可以用作后續任務的輸入或模板的輸出。
outputParameterName1:
Type: # 可選,表示對輸出參數類型的聲明,支持的基本類型有String, Number, Boolean, List,Json,默認String。注意:outputParameterName1的輸出值會按照該處的聲明類型Type對ValueSelector篩選結果進行包裝來生成。當Type為List時,ValueSelector的篩選結果會被放到 [] 中輸出,比如篩選結果為"i-12345zxcv",那么最終輸出的值則會是["i-12345zxcv"];當Type為非List類型時,ValueSelector的篩選結果會直接作為輸出值。比如Type為String,篩選結果為"i-12345zxcv",那么最終輸出值就是"i-12345zxcv"。
ValueSelector: "jq selector" # 如Task是一個OpenAPI調用時,把OpenAPI的調用結果當做一個JSON輸入,應用jq從該JSON中截取所需要的值,請參考云產品動作和公共模板等具體例子。
# 流程控制參數
OnError: "ACS::END/ACS::NEXT/other-task-name" # 可選,定義了當前任務執行出現錯誤時的執行流程,默認:END,即終止整個執行。
OnSuccess: "ACS::NEXT/other-task-name/ACS::END" # 可選,定義了當前任務執行成功后的執行流程,默認:NEXT,即下一個任務。
JSON格式(請參考YAML注釋說明)
{
"Tasks": [
{
"Name": "TaskName1",
"Action": "TaskType",
"When": "Condition",
"Description": "description",
"Properties": {
"Property1": "Value1",
"Property2": "Value2"
},
"Outputs": {
"outputParameterName1": {
"Type": null,
"ValueSelector": "jq selector"
}
},
"OnError": "ACS::END/ACS::NEXT/other-task-name",
"OnSuccess": "ACS::NEXT/other-task-name/ACS::END",
}
]
}
文檔內容是否對您有幫助?