全部產品
Search
文件中心

Resource Orchestration Service:使用營運編排服務參數倉庫建立ROS模板中的參數

更新時間:Feb 28, 2025

當您需要多次查詢ROS模板中某個參數時,可以將參數值儲存在阿里雲營運編排服務OOS(Operation Orchestration Service)的參數倉庫中,然後在ROS模板中輸入該參數名稱即可。

背景資訊

OOS參數倉庫中可以儲存普通參數或加密參數,加密參數可以將儲存的值通過KMS服務進行加密。本文以建立一組ECS執行個體為例,為您介紹使用OOS參數倉庫建立參數,並編寫ROS模板引用這些參數的方法。本樣本將會建立以下參數:

參數

參數名稱

參數種類

參數類型

參數值

ImageId

my_image

普通參數

String

centos_7_9_x64_20G_alibase_2020****.vhd

SecurityGroupIds

security_group_ids

普通參數

StringList

sg-group1,sg-group2

Password

Password

加密參數

String

MyPassword1

關於參數的更多資訊,請參見ALIYUN::ECS::InstanceGroup

說明

建立參數時,您需要選擇與資源棧相同的地區。例如:您將使用模板在華東1(杭州)建立資源棧,則需要將參數儲存到相同地區。

步驟一:在營運編排控制台建立參數

  1. 登入營運編排控制台

  2. 在左側導覽列,單擊參數倉庫

  3. 在頂部功能表列的地區下拉式清單,選擇參數的所在地區。

    說明

    參數的所在地區需要和資源棧所在地區相同,本樣本為華東1(杭州)

  4. 建立普通參數ImageId。

    1. 參數倉庫頁面,單擊普通參數,然後單擊建立普通參數

    2. 建立普通參數頁面,配置參數名稱,選擇參數類型

      本樣本中,您需要進行如下配置:

      • 參數名稱:my_image。

      • 參數類型:String。

      • :centos_7_9_x64_20G_alibase_2020****.vhd。

    3. 單擊建立

      建立完成後,您可以在普通參數頁簽,單擊ImageId參數名稱,在描述頁簽查看名稱、版本、類型、值等資訊。

  5. 建立普通參數SecurityGroupIds。

    1. 參數倉庫頁面,單擊普通參數,然後單擊建立普通參數

    2. 建立普通參數頁面,配置參數名稱,選擇參數類型

      本樣本中,您需要進行如下配置:

      • 參數名稱:security_group_ids。

      • 參數類型:StringList。

      • :sg-group1,sg-group2。

    3. 單擊建立

      建立完成後,您可以在普通參數頁簽,單擊SecurityGroupIds參數名稱,在描述頁簽查看名稱、版本、類型、值等資訊。

  6. 建立加密參數Password。

    1. 參數倉庫頁面,單擊加密參數,然後單擊建立加密參數

    2. 建立加密參數頁面,配置參數名稱,選擇KMS密鑰ID

      本樣本中,您需要進行如下配置:

      • 參數名稱:Password。

      • KMS密鑰ID:Default Service CMK。

      • :MyPassword1。

    3. 單擊建立

      建立完成後,您可以在加密參數頁簽,單擊Password參數名稱,在描述頁簽單擊右側的顯示,擷取Password取值。

步驟二:編寫ROS模板

當您建立參數後,可以編寫ROS模板,在Parameters或Resources中引用參數:

  • 在Parameters中引用

    您需要將Type設定為ALIYUN::OOS::Parameter::Value(普通參數)或ALIYUN::OOS::SecretParameter::Value(加密參數)。

    例如:您可以通過如下代碼引用普通參數ImageId的最新版本取值。

    Parameters:
      ImageId:
        Type: ALIYUN::OOS::Parameter::Value
        Default: my_image

    您也可以將參數設定為my_image:1,表示引用版本1的取值。

  • 在Resources中引用

    您可以在Resource的Properties中引用參數,格式為: {{resolve:<參數類型>:<參數名稱>:<參數版本號碼>}}

    • 參數類型(必填)

      儲存參數的服務。取值:

      • oos:普通參數。

      • oos-secret:加密參數。

    • 參數名稱(必填)

      參數的名稱。

    • 參數版本號碼(選填)

      參數的版本,若不填寫則為最新版本。

    例如:您可以通過如下代碼引用普通參數ImageId的最新版本取值、加密參數Password版本2的取值。

    Resources:
      ECS:
        Type: ALIYUN::ECS::Instance
        Properties:
          ImageId: '{{resolve:oos:my_image}}'
          Password: '{{resolve:oos-secret:Password:2}}'
          ...: null

模板中引用參數時支援大部分函數。更多資訊,請參見函數(Functions)。不支援的函數為:Ref、Fn::GetAtt、Fn::GetStackOutput、Fn::Calculate。

本樣本中模板如下:

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  InstanceType:
    Type: String
    Default: ecs.c6.large
  ImageId:
    Type: ALIYUN::OOS::Parameter::Value
    Default: my_image
  Vpc:
    Type: String
  VSwitch:
    Type: String
Resources:
  ECS:
    Type: ALIYUN::ECS::InstanceGroup
    Properties:
      ImageId:
        Ref: ImageId
      InstanceType:
        Ref: InstanceType
      VpcId:
        Ref: Vpc
      VSwitchId:
        Ref: VSwitch
      SecurityGroupIds: '{{resolve:oos:security_group_ids:1}}'
      Password: '{{resolve:oos-secret:Password}}'
      MaxAmount: 1
Outputs:
  InstanceIds:
    Value:
      Fn::GetAtt:
        - ECS
        - InstanceIds

ROS模板引用的參數會基於OOS參數類型進行轉換。當前OOS參數支援String和StringList類型,如果引用了StringList型別參數,ROS會將其轉換為List類型在模板中使用。例如:類型為StringList的參數SecurityGroupIds,值為sg-group1,sg-group2。當您建立ALIYUN::ECS::InstanceGroup資源時,SecurityGroupIds取值將解析為["sg-group1", "sg-group2"]。

步驟三:在Resource Orchestration Service控制台建立資源棧

Resource Orchestration Service控制台使用步驟二中的樣本模板建立資源棧,建立一組ECS執行個體。具體操作,請參見建立資源棧

資源棧建立成功後,您可以在Resource Orchestration Service控制台左側功能表列單擊資源棧,在資源棧列表頁面找到目標資源棧並單擊資源棧名稱,在資源棧詳情頁單擊參數頁簽查看參數及取值,驗證模板參數引用是否正確。