在反覆開發雲端範本期間或擁有最終範本時,您可以使範本在 Service Broker 自助服務目錄中可用,以供取用者使用。若要進一步增強使用者體驗,您可以建立自訂請求表單。自訂表單比簡單範本輸入選項更強大。

首要事項

  • 確認您具有支援範本的基礎結構。如果沒有,請從教學課程:在 Cloud Assembly 中設定和測試 vSphere 基礎結構和部署開始並繼續其他教學課程。
  • 確認已將部分資源集區標記為 env:devenv:prod。如需詳細資訊,請參閱教學課程:在 Cloud Assembly 中使用標籤管理 vSphere 資源
  • 確保您具有以下類似的可部署雲端範本。此教學課程從下列範本開始。
    formatVersion: 1
    inputs:
      installedOS:
        type: string
        title: Operating System
        description: Select the operating system.
        enum:
          - centos
          - ubuntu
      placement:
        type: string
        enum:
          - 'env:dev'
          - 'env:prod'
        default: 'env:dev'
        title: Select Placement for Deployment
        description: Target Environment
    resources:
      Cloud_vSphere_Disk_1:
        type: Cloud.vSphere.Disk
        properties:
          capacityGb: 1
      Cloud_vSphere_Machine_1:
        type: Cloud.vSphere.Machine
        properties:
          image: '${input.installedOS}'
          installedOS: '${input.installedOS}'
          flavor: small
          constraints:
            - tag: '${input.placement}'
          tags:
            - key: db
              value: mysql
          networks:
            - network: '${resource.Cloud_NSX_Network_1.id}'
              tags:
                - key: db
                  value: mysql
          attachedDisks:
            - source: '${resource.Cloud_vSphere_Disk_1.id}'
      Cloud_NSX_Network_1:
        type: Cloud.NSX.Network
        properties:
          networkType: existing
          tags:
            - key: NGINX
              value: web

步驟 1:將輸入新增至雲端範本

除了現有的作業系統類型輸入,此程序還會更新放置輸入並新增大小輸入。在 Service Broker 中自訂請求表單時,這些是在請求表單上自訂的三個欄位。

  1. Cloud Assembly 中,選取設計 > 雲端範本,然後建立或開啟以上提供的範本。

    範例範本可用來解釋不同的選項並包含範例值。根據您的環境進行調整。

  2. 新增大小變數,並在 [輸入] 區段中定義大小。
    1. 在 Cloud_vSphere_Machine_1 區段中,將變數新增至 flavor 內容。
       flavor: '${input.size}'
    2. 在 [輸入] 區段中,新增使用者輸入名稱大小,以便使用者可以選取部署大小。這有時稱為您為雲端區域定義的 T 恤大小。
       size:
          type: string
          title: Deployment size
          description: Select the the deployment t-shirt size.
          enum:
            - small
            - medium
            - large
  3. 使用描述性術語而非標籤字串更新放置輸入。

    這些限制標籤將與您在教學課程:在 Cloud Assembly 中使用標籤管理 vSphere 資源中新增的功能標籤相符。

    1. 在 [輸入] 區段中,新增名為 placement 的使用者輸入,以便使用者可以選取開發或生產作為部署放置。

      此範例使用 oneOf 屬性,可讓您在提交部署程序所需字串的同時顯示自然語言標籤。例如,env:devenv:prod 標籤。

       
      placement:
          type: string
          oneOf:
            - title: Development
              const: 'env:dev'
            - title: Production
              const: 'env:prod'
          default: 'env:dev'
          title: Select Deployment Placement
          description: Target Environment
  4. 請檢閱完整 YAML,以確保其類似下列範例。
    formatVersion: 1
    inputs:
      installedOS:
        type: string
        title: Operating system
        description: Select the operating system.
        enum:
          - centos
          - ubuntu
      placement:
        type: string
        oneOf:
          - title: Development
            const: 'env:dev'
          - title: Production
            const: 'env:prod'
        default: 'env:dev'
        title: Select Deployment Placement
        description: Target Environment
      size:
        type: string
        title: Deployment size
        description: Select the the deployment t-shirt size.
        enum:
          - small
          - medium
          - large
    resources:
      Cloud_vSphere_Disk_1:
        type: Cloud.vSphere.Disk
        properties:
          capacityGb: 1
      Cloud_vSphere_Machine_1:
        type: Cloud.vSphere.Machine
        properties:
          image: '${input.installedOS}'
          installedOS: '${input.installedOS}'
          flavor: '${input.size}'
          constraints:
            - tag: '${input.placement}'
          tags:
            - key: db
              value: mysql
          networks:
            - network: '${resource.Cloud_NSX_Network_1.id}'
              tags:
                - key: db
                  value: mysql
          attachedDisks:
            - source: '${resource.Cloud_vSphere_Disk_1.id}'
      Cloud_NSX_Network_1:
        type: Cloud.NSX.Network
        properties:
          networkType: existing
          tags:
            - key: NGINX
              value: web
  5. 按一下部署,確認請求的第二頁與下列範例類似,然後可以確認部署在部署後是否位於所選開發或生產資源集區。

    部署請求表單的第二頁,其中顯示作業系統類型、部署放置和部署大小的輸入。

步驟 2:對雲端範本進行版本設定和發行

當您擁有可部署範本時,現在可使其在 Service Broker 目錄中可用,以供其他使用者部署。若要使雲端範本可探索以便將其新增至目錄,必須發行此雲端範本。在此程序中,我們將對其進行版本設定以擷取範本快照,然後發行範本。

  1. 選取設計 > 雲端範本,然後在設計畫布中開啟範本。
  2. 按一下版本設定,然後輸入說明。

    [建立版本] 對話方塊,其中具有版本號碼和說明,並已選取 [發行] 核取方塊。
  3. 選取發行核取方塊,然後按一下建立

    發行雲端範本不會自動將其新增至 Service Broker。發行使其可探索,以便可以將其新增至目錄。

步驟 3:將雲端範本新增至 Service Broker 目錄

您可以使用 Service Broker 目錄將雲端範本提供給組織內的其他取用者,他們無需瞭解如何建立範本。他們可透過目錄部署範本。

您必須先將範本匯入至 Service Broker,才能將範本新增為目錄項目。您只能匯入已發行的雲端範本。

  1. 若要從 Cloud Assembly 開啟 Service Broker,請按一下右上角的應用程式功能表。
    頁面右上角的應用程式功能表開啟並反白顯示 Service Broker。
  2. 按一下 Service Broker
  3. 匯入雲端範本。
    1. Service Broker 中,選取內容和原則 > 內容來源
    2. 按一下新增,然後選取 VMware Cloud Templates
    3. 輸入名稱

      在此教學課程中,輸入 Cloud Assembly DevProject

    4. 對於專案,請選取在 Cloud Assembly 中建立的 Development Project
    5. 按一下驗證

      系統必須指示至少已找到一個項目。

    6. 驗證後,按一下建立並匯入

      Cloud Assembly DevProject 會作為內容來源新增至清單中。

  4. 使雲端範本在目錄中可用。
    1. 選取內容和原則 > 內容共用
    2. 專案下拉式清單中,選取 Development Project
    3. 按一下新增項目,然後選取
    4. 共用項目對話方塊中,選取 Cloud Assembly DevProject,然後按一下儲存
  5. 若要確認 Development Template 已新增至目錄,請按一下目錄
  6. 按一下 Development Template 卡上的請求

    請注意,此處提供了您在雲端範本上看到的輸入。下一步是自訂請求表單。


    Deployment Template 目錄項目的目錄請求表單。包括部署名稱、作業系統、放置和部署大小選項。

步驟 4:建立範本的自訂表單

此自訂表單的目標是提供使用者根據 env:dev 或 env:prod 標籤選取作業系統和放置的表單。env:dev 選項允許使用者選取小型或中型,大型不是一個選項。但是,如果使用者選取 env:prod,則沒有選取大型的選項,大小會向使用者隱藏,但會包含在請求中。

  1. 若要在 Service Broker 中建立自訂表單,請選取內容和原則 > 內容
  2. 按一下 Development Template 項目左側的垂直省略號,然後按一下自訂表單
  3. 自訂輸入選項。
    1. 在畫布中,按一下畫布中的欄位,然後按照下表指定的方式設定內容。
      畫布欄位名稱 外觀 限制
      作業系統

      標籤和類型

      • 標籤 = 作業系統

      值選項

      • 值選項 = 常數
      • 值來源 = centos|CentOS,ubuntu|Ubuntu

      此範例使用值選項,將所有小寫作業系統名稱自訂為慣用的作業系統名稱。

      選取部署放置

      值選項

      • 值選項 = 常數
      • 值來源 = env:dev|Development,env:prod|Production
      部署大小

      可見度

      • 值來源 = 條件值
      • 如果 [選取部署放置] 為 env:dev,則設定值 = 是

      預設值

      • 值來源 = 條件值
      • 如果 [選取部署] 為 env:prod,則設定值 = 大型

      值選項

      • 值選項 = 常數
      • 值來源 = small|Small,medium|Medium

      請注意,值來源不包含大型。已排除大型,因為它僅適用於生產且為所需值。大型值包含在部署請求中,無需使用者起始動作。

    2. 若要在目錄中開啟表單,請按一下啟用
    3. 按一下儲存
  4. 若要提交至少一個小型開發請求和一個生產請求來確保正確結果,請在目錄中測試表單。

    使用下列範例驗證結果。

    1. 透過提供名稱 (在此範例中為 Test small) 並選取 [CentOS]、[開發] 和 [小型] 選項,測試小型開發請求表單。
      目錄請求表單,使用 Test small 作為部署名稱,並已選取 [開發] 和 [小型]。
    2. 若要驗證小型開發部署,請選取部署 > 部署,然後按一下 Test small 部署。
    3. 在 [拓撲] 索引標籤上,按一下 Cloud_vSphere_Machine,然後在右窗格中找到 [自訂內容] 區段。

      要檢閱的一些值包括 cpuCount = 2 和 flavor = small。


      部署拓撲頁面,其中畫布中反白顯示了 Cloud_vSphere_Machine,右窗格中反白顯示了 cpuCount=2 和 flavor=small。
    4. 透過輸入名稱 (在此範例中為 Test large) 測試生產請求表單,並選取 [CentOS] 和 [生產] 選項。

      請注意,設定的表單既不顯示也不要求使用者選取大小。


      目錄請求表單,其中部署名稱為 Test large,並已選取 [生產]。
    5. 若要驗證生產部署,請選取部署 > 部署,然後按一下 Test large 部署。
    6. 在 [拓撲] 索引標籤上,按一下 Cloud_vSphere_Machine,然後在右窗格中找到 [自訂內容] 區段。

      要檢閱的一些值包括 cpuCount = 8 和 flavor = large。


      部署拓撲頁面,其中畫布中反白顯示了 Cloud_vSphere_Machine,右窗格中反白顯示了 cpuCount=8 和 flavor=large。

步驟 5:控制目錄中的雲端範本版本

大多數情況下,您只想使最新的雲端範本在 Service Broker 目錄中可用。下列程序支援反覆開發,即發行一個版本的範本並將其新增至目錄,但現在您改善了範本並想要將目前版本取代為更新版本。

在步驟 2 中,您已對範本進行版本設定並發行,因此您很熟悉此流程。在步驟 3 中,您已將範本新增至目錄。當您執行反覆開發和使用最新版本更新目錄時,此程序會將兩個步驟結合在一起。

您可以選擇使多個版本在目錄中可用。

  1. Cloud Assembly 中,對您現在要使其在目錄中可用的範本進行版本設定。
    1. 選取設計 > 雲端範本,然後在設計畫布中開啟範本。
    2. 按一下版本歷程記錄
    3. 找到想要新增至目錄的版本,然後按一下版本
    4. 輸入說明,選取發行核取方塊,然後按一下建立

      此時,您可以選擇在目錄中保留舊版本。如果想要多個版本,請忽略下一個步驟 - 取消發行版本。

    5. 若要僅使一個版本的範本在目錄中可用,請檢閱版本歷程記錄清單,然後對目錄中不需要的每個版本按一下取消發行
  2. 若要使用最新版本更新 Service Broker 目錄並取代所有舊版本,您必須收集新版本。
    1. Service Broker 中,選取內容和原則 > 內容來源
    2. 按一下本教學課程中使用的 Cloud Assembly DevProject 內容來源。
    3. 按一下驗證

      您應會看到一則項目已找到的訊息。

    4. 按一下儲存並匯入
  3. 確認目錄是否顯示所需版本或沒有版本。
    1. Service Broker 中,按一下目錄
    2. 找到目錄項目,然後按一下請求
    3. 在請求表單頂端,按一下版本並確認版本。

    下列螢幕擷取畫面顯示 8。


    具有一個可用版本的新請求表單的螢幕擷取畫面。