在專案中堆疊可部署的架構

您可以在專案中將可部署架構堆疊在一起,以建立更複雜的端對端解決方案架構。 您不需要編寫 Terraform 程式碼來將可部署的架構連接在一起。 在可部署架構中配置輸入值時,您可以引用另一個架構的輸入或輸出以將它們連結在一起。 部署堆疊架構後,您可以將它們作為可部署架構新增至私人目錄中,以便輕鬆地與組織中的其他人共用端對端解決方案。

這是一個實驗性功能,僅供評估和測試目的,可能會更改,恕不另行通知。

在專案中,您可以堆疊目錄中已經可用的可部署架構。 如果您正在建立尚未加入目錄的可部署架構,則可以 透過將可部署架構與其他架構堆疊來擴充它。 這種方法提供了更多的自訂選項,這些選項在專案中堆疊可部署架構時不可用,例如包含針對不同用例的選用架構。 如果可部署架構尚未在私有目錄中提供,則該方法也有效。 無論採用何種方法將架構堆疊在一起,結果都是更強大的可部署架構,使用者可以使用專案進行配置和部署。

開始之前

確保您擁有下列存取權限。 有關存取和權限的更多信息,請參閱 分配項目存取權限

  • IBM Cloud 專案服務上的編輯角色。
  • IBM Cloud® Schematics 服務上的編輯者和經理角色。
  • 專案資源組的查看者角色。

將您想要堆疊在一起的可部署架構新增到您的專案中。 有關更多信息,請參閱 向項目添加可部署架構

當您將可部署架構新增至專案時,請提供有意義的名稱以協助識別它們。 例如,如果您新增了為應用程式建立基礎的基礎架構可部署架構,則需要先部署該基礎架構。 否則,應用程式無法部署到該基礎架構上。 命名您的基礎架構可部署架構 1 - infrastructure 當您將其添加到您的項目時。 命名應用程式 2 - application 表示需要第二次部署。

使用 CLI 將體系結構堆疊在一起

將可部署的架構新增至專案後,透過執行以下命令將它們堆疊在一起 ibmcloud project config-create 命令。 在 Definition 選項,指定 members 透過為想要堆疊在一起的現有可部署架構提供名稱和配置 ID:

ibmcloud project config-create --project-id PROJECT-ID [--definition DEFINITION]

例如,以下命令會建立一個名為 StackDev 在你的專案中。 它包含兩種可部署的架構,custom-apachetest-slz 已經作為配置添加到項目中:

ibmcloud project config-create \
  --project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
  --definition '{"name": "StackDev", "members": [{"name": "custom-apache", "config_id": "caff3a49-0bf4-40c4-b348-47e5da6e2274"}, {"name": "test-slz", "config_id": "fc7fa3d1-33db-4c40-9570-7604348ab3c4"}]}' \
  --output json

有關命令參數的更多信息,請參見 ibmcloud project config-create

使用 CLI 建立堆疊定義

若要將可部署架構納入私有目錄,您必須建立堆疊定義。 它定義了每個可部署架構之間的關係。 提供此訊息,以便使用者在將整個解決方案從私有目錄新增至專案時可以成功部署整個解決方案。

堆疊定義包含可以在成員可部署架構中引用的輸入和輸出。 您也可以在可部署架構之間新增引用,以便為使用者將它們連結在一起。 需要特定值或參考才能成功部署的輸入需要包含在堆疊定義中。

透過將兩個架構堆疊在一起而形成的可部署架構的圖表。 堆疊定義中定義了三個輸入值:前綴、ssh_key 和 ssh_private_key。 test-slz 架構引用前綴和 ssh_key 作為其兩個輸入值。 而 custom-apache 架構引用了 test-slz 的輸出作為其輸入之一,以及來自堆疊定義中的 ssh_private_key。
可部署架構之間的引用

目前,成員無法引用堆疊定義中的輸出。

運行以下命令 ibmcloud project stack-definition-create 命令建立堆疊定義並提供輸入:

ibmcloud project stack-definition-create --project-id PROJECT-ID --id

在哪裡 idStackDev 您剛剛在專案中建立的可部署架構。

例如,以下命令將以下三個輸入新增至堆疊定義。 這些輸入是必需的字串,對使用者來說不是隱藏的,因此使用者必須配置這些輸入值才能部署端對端可部署架構:

  • prefix 輸入 stackDemo 作為預設值。
  • ssh_key 沒有預設值的輸入。
  • ssh_private_key 提供預設值來幫助使用者配置輸入。

該命令還包括堆疊在一起的兩個可部署架構的輸入名稱。 這些輸入將填充值作為參考,並為從私人目錄將解決方案新增至專案的使用者儲存:

  • test-slz 可部署架構包含 prefix 輸入和一個 ssh_key 輸入。
  • custom-apache 可部署架構包含 ssh_private_key 輸入和一個 prerequisite_workspace_id 輸入。

有關編寫引用的更多信息,請參閱 引用值

ibmcloud project stack-definition-create \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--stack-definition '{"inputs": [{"name": "prefix", "type": "string", "hidden": false, "required": true, "default": "stackDemo"}, {"name": "ssh_key", "type": "string", "hidden": false, "required": true}, {"name": "ssh_private_key", "type": "string", "hidden": false, "required": true, "default": "<<-EOF\nINSERT YOUR KEY HERE\nEOF"}], "members": [{"name": "test-slz", "inputs": [{"name": "prefix"}, {"name": "ssh_key"}]}, {"name": "custom-apache", "inputs": [{"name": "ssh_private_key"}, {"name": "prerequisite_workspace_id"}]} ]}' --output json

有關命令參數的更多信息,請參見 ibmcloud project stack-definition-create

使用 CLI 引用成員可部署架構中的堆疊定義輸入

現在輸入已新增至堆疊定義中,請透過執行下列命令更新成員可部署架構以引用這些輸入 ibmcloud project config-update 針對堆疊在一起的每個體系結構的命令:

ibmcloud project config-update --project-id PROJECT-ID --id

例如,以下命令更新 test-slz 可部署架構來引用新增到堆疊定義的輸入:

ibmcloud project config-update \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4 \
--definition '{"inputs": {"prefix": "ref:../../inputs/prefix", "ssh_key": "ref:../../inputs/ssh_key"}}' --output json

custom-apache 架構使用 ssh_private_key 堆疊定義中的值,更新 custom-apache 可部署架構來參考該值。 這 custom-apache 建築也使用 schematics_workspace_id 輸入值作為其輸入之一,因此包含對該值的引用:

ibmcloud project config-update \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id caff3a49-0bf4-40c4-b348-47e5da6e2274 \
--definition '{"inputs": {"ssh_private_key": "ref:../../inputs/ssh_private_key", "prerequisite_workspace_id": "ref:../test-slz/outputs/schematics_workspace_id"}}' --output json

有關命令參數的更多信息,請參見 ibmcloud project config-update

使用 CLI 更新堆疊定義中的輸入值

現在,成員可部署架構已配置為引用您想要的值,請透過執行下列命令來更新堆疊定義中的輸入值 ibmcloud project config-update 對於 StackDev 可部署的架構。 例如,以下命令更新 prefix 引用的輸入值 test-slz 可部署的架構。 還提供了 ssh_keyssh_private_key 輸入:

ibmcloud project config-update  \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--definition '{"inputs": {"prefix": "kb-stack-0327", "ssh_key": "<publicKey>", "ssh_private_key": "<privateKey>"}}' --output json

有關命令參數的更多信息,請參見 ibmcloud project config-update

現在輸入值已配置,請驗證部署 每個成員可部署架構。

例如,以下命令驗證 test-slz 可部署架構:

ibmcloud project config-validate \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4

雖然以下命令批准 test-slz 可部署的架構:

ibmcloud project config-approve \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4 \
--comment 'I approve'

以下命令將部署 test-slz 可部署架構:

ibmcloud project config-deploy \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4

使用 CLI 加入私有目錄

在每個成員可部署架構都經過驗證和部署後,您可以將可部署架構加入到私有目錄中,以供其他人存取。 當使用者將您的可部署架構從私有目錄新增至專案時,您堆疊在一起的每個架構都將包含在專案中。 運行以下命令 ibmcloud project stack-definition-export 命令:

ibmcloud project stack-definition-export --project-id PROJECT ID

您可以建立新產品或為現有產品新增版本。 例如,以下命令會在您的私人目錄中建立一個名為 My Apache Stack

ibmcloud project stack-definition-export --project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 --id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 --settings '{"catalog_id": "702ff97a-e35a-45a4-a0c0-a04e2e052bc8", "label": "My Apache Stack"}' --output json

以下命令建立現有產品的新版本:

ibmcloud project stack-definition-export \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--settings '{"catalog_id": "702ff97a-e35a-45a4-a0c0-a04e2e052bc8", "product_id": "1bf57631-27a2-42cc-ac87-733cca67e8a5", "target_version": "1.0.1"}' --output json

有關命令參數的更多信息,請參見 ibmcloud project stack-definition-export

您的架構現在是私人目錄中尚未發布的草稿,但任何具有私人目錄編輯存取權限的人都可以使用。

要完成您的私人目錄的加入,請編輯目錄詳細資訊 並提供架構圖和類別等資訊。

使用控制台將架構堆疊在一起

將可部署架構新增至專案後,對其進行配置。 如果您堆疊在一起的架構相互依賴,則在配置架構時 透過引用輸入或輸出將它們連結在一起。 然後,透過完成以下步驟將架構堆疊在一起:

  1. 選取您想要堆疊在一起的可部署架構的核取方塊。

  2. 選擇 “堆疊”

  3. 為可部署架構提供一個名稱或選擇一個現有的架構。

    可部署的架構應該協同工作以提供解決方案。 為端到端解決方案考慮一個有意義的名稱,以準確代表您堆疊在一起的每個架構。 舉例來說,如果您要將 Apache 應用程式與基礎架構基礎堆疊在一起,請將其命名為 Apache application with infrastructure base 之類的名稱,以清楚辨識架構所部署的內容。

  4. 按一下繼續

使用控制台定義變數

將可部署架構堆疊在一起後,您需要為使用者定義變數。 您的目標是將可部署的架構連結在一起,以便使用者可以在單一介面中配置輸入,而不是單獨配置架構。

您定義的輸入變數由使用者在可部署架構從目錄新增至專案後配置。 類似地,您選擇的輸出變數將顯示給架構父層級的使用者。 不要選擇使用者不應該配置的變數。 例如,如果您的架構需要輸入變數(例如儲存計畫)的特定值,請不要選擇儲存計畫輸入。 不要選擇 將可部署架構連結在一起的參考。 如果這樣做,這些架構之間的連線可能會中斷,整個解決方案可能無法成功部署。

為了方便使用者配置,請盡量減少所需輸入值的數量。 檢查每個架構所需的輸入,並確保透過在堆疊定義中新增對輸入值的參考或引用其他架構的輸出值來配置這些輸入。

請完成下列步驟:

  1. 配置 項目中的選項卡,點選 選項 圖示 選項圖示 對於堆疊式可部署架構並選擇 定義變數

  2. 「安全性」 標籤上,選擇使用者需要配置的任何變數。

  3. 轉到 “必需輸入” 標籤並選擇用戶需要配置的任何必需輸入。

  4. 轉到可選輸入選項卡並選擇用戶需要配置的任何可選輸入。

  5. 轉到 “輸出” 標籤並選擇您想要在父級別顯示的任何輸出變數。

    讓使用者在部署架構後更容易找到重要的輸出值,例如應用程式 URL 或憑證名稱。 從成員可部署架構中選擇重要的輸出值,以便在父層級向使用者顯示它們。

  6. 一下下一步並繼續為其餘架構選擇變數。

  7. 完成後,按一下 “完成” 並配置部署的架構。 您在定義變數時選擇的任何輸入都可能需要進行設定。

使用控制台加入私有目錄

驗證並部署堆疊在一起的每個可部署架構後,您可以將它們作為可部署架構新增至私人目錄中,以便輕鬆地與組織中的其他人共用解決方案。 有關更多信息,請參閱 共享私人目錄

請完成下列步驟:

  1. 配置 項目中的選項卡,點選 選項 圖示 選項圖示 對於可部署的架構並選擇 新增至私人目錄
  2. 選擇或建立您想要新增可部署架構的私有目錄。
  3. 選擇它是新產品還是現有產品的新版本。
  4. 提供產品名稱(如果適用)、類別、變體和版本等詳細資訊。
  5. 下一步
  6. 查看使用者從私有目錄為專案新增可部署架構後可以配置的變數。 如果需要進行任何更改,您可以 定義變數
  7. 按一下新增

您的可部署架構現在是私有目錄中尚未發布的草稿,但任何具有您的私人目錄編輯者存取權限的人都可以使用。 當使用者將您的可部署架構從私有目錄新增至專案時,您堆疊在一起的每個架構都將包含在專案中。

若要將可部署架構加入您的私人目錄,請編輯目錄詳細資訊 並提供架構圖和類別等資訊。

對於您與其他架構堆疊的可部署架構,是否有可用的新版本? 更新專案中的配置以使用最新版本,驗證並部署更改,然後完成將更新的解決方案加入私有目錄的步驟。 選擇您已加入的現有產品並提供新的版本號。 透過這樣做,您可以協助確保更新後的可部署架構仍然能夠與您一起堆疊的其他架構正常運作。