資源編排支援雲助手,增強例項運維能力

鬱蒼發表於2018-08-09

目前,阿里雲資源編排服務(ROS)開始支援ECS例項雲助手功能,增加了2個新的雲資源型別。

通過以上ROS資源型別,可以方便的建立指令碼,然後對執行中(Running)的一臺以及多臺例項執行 bat/PowerShell(Windows 例項)指令碼或者 Shell 指令碼(Linux 例項)。

你也可以設定指令碼命令的執行週期,使例項維持在某種狀態、獲取例項監控以及日誌資訊或者守護程式等。雲助手不會主動發起任何操作,所有的操作都在您的可控範圍內。

瞭解更多關於雲助手的內容

資源型別介紹

如果你還不瞭解阿里雲資源編排(ROS),請點選這裡

資源編排在雲助手的API上進行了封裝,提供了建立命令和執行命令兩個資源型別,下面讓我們看下如何使。

建立雲助手命令

通過資源編排(ROS)建立一條命令。

{
  "ROSTemplateFormatVersion" : "2015-09-01",
  "Resources" : {
    "MyCommand": {
      "Type": "ALIYUN::ECS::Command",
      "Properties": {
        `Name`: `my-command`,
        `Type`: `RunShellScript`,
        `Description`: `my-command-description`,
        `CommandContent`: `ZWNobyAxMjM=`
      }
    }
  },
  "Outputs": {
    "CommandId": {
        "Value" : {"Fn::GetAtt": ["MyCommand", "CommandId"]}
    }
  }
}

這個例子裡我們選擇了資源型別ALIYUN::ECS::Command,並且在Properties裡輸入了命令的一些配置,其中需要較為關注的有:

Name 命令的名稱,這裡設定為 my-command

Type 命令的型別,目前雲助手支援下面三種指令碼,這裡設定為RunShellScript

  • Windows 例項適用的 Bat 指令碼(RunBatScript
  • Windows 例項適用的 PowerShell 指令碼(RunPowerShellScript
  • Linux 例項適用的 Shell 指令碼(RunShellScript

CommandContent 命令指令碼Base64 編碼後的內容。大小不能超過 16 KB。這裡設定為ZWNobyAxMjM=(echo 123 base54編碼後得到)。

最後,通過Outputs標籤返回新建命令的CommandId。

執行雲助手命令

通過資源編排(ROS)執行命令指令碼。下面的例子是,我們在建立命令後,執行這個命令。

{
  "ROSTemplateFormatVersion" : "2015-09-01",
  "Resources" : {
    "MyCommand": {
      "Type": "ALIYUN::ECS::Command",
      "Properties": {
        `Name`: `my-command`,
        `Type`: `RunShellScript`,
        `Description`: `my-command-description`,
        `CommandContent`: `ZWNobyAxMjM=`
      }
    },
    "MyInvocation": {
      "Type": "ALIYUN::ECS::Invocation",
      "Properties": {
        `CommandId`: { "Fn::GetAtt" : [ "MyCommand", "CommandId" ] },
        `InstanceIds`: [
            "i-2zefq1f3ynnrr89qkzg9"
        ],
        `Timed`: true,
        `Frequency`: `0/10 0/1 * * * ?`
      }
    }
  },
  "Outputs": {
    "CommandId": {
        "Value" : {"Fn::GetAtt": ["MyCommand", "CommandId"]}
    },
    "InvokeId": {
        "Value" : {"Fn::GetAtt": ["MyInvocation", "InvokeId"]}
    }
  }
}

這個例子裡我們選擇了資源型別ALIYUN::ECS::Invocation,配置有:

CommandId 命令的ID,這裡使用 Fn::GetAtt 方法從 MyCommand 中獲取到 CommandId

InstanceIds 指令碼命令執行的例項ID列表。最多支援20臺例項。例項需要為專有網路執行中的例項。

Timed 命令是否為週期執行。

Frequency 週期任務的執行週期,該引數取值遵循Cron表示式,參閱 Cron 表示式[](https://www.alibabacloud.com/help/faq-detail/64769.htm)

最後,通過Outputs標籤返回新建命令的CommandId和InvokeId。

使用ROS控制檯

  1. 開啟ROS控制檯。選擇資源棧管理
  2. 選擇建立資源棧,輸入模板資料,然後下一步建立。如果執行命令失敗,整個Stack的資源自動回滾。

此外,通過阿里雲資源編排可以建立非常豐富的資源型別, DevOps 實踐中,可以輕鬆地克隆開發、測試、線上環境。同時,也可以更容易實現應用的整體遷移和擴容,快來體驗吧!


相關文章