リソースブロックへの Terraform Orchestration インターフェイスの追加

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む8読むのに数分
  • Cloud Provisioning and Governance の Terraform ストアアプリを有効にした後、Terraform オープンソースエディションを使用して、クラウドプロバイダーのクラウドベースの操作をサポートします。Terraform テンプレートを使用してクラウドベースの操作を実行するには、Terraform Orchestration インターフェイスをリソースブロックに追加します。

    始める前に

    必要なロール:sn_cmp.cmp_root_admin、sn_cmp.cloud_service_designer

    手順

    1. クラウド管理ポータルで、次の場所に移動します。 デザイン > リソースブロック.
    2. リソースブロック、たとえば [Azure データセンター] をクリックします。
    3. リソースブロックのステータスを [公開] から [ドラフト] に移動して、編集可能にします。
    4. 移動先 一般情報 > ゲストインターフェイスをクリックし、[ 新規] をクリックします。
    5. [ゲストインターフェイス] リストから [Terraform Orchestration インターフェイス] を検索して選択し、[送信] をクリックします。
    6. [操作] タブを選択します。
    7. [入力パラメーター] タブで [インターフェイス] に移動し、[Terraform Orchestration インターフェイス] を選択します。
    8. [入力パラメーター] タブで、CAPI 操作入力を設定します。

      CAPI インターフェイス (この場合は Terraform Orchestration インターフェイス) で、CreateStack メソッドを開きます。CAPI からの入力が [入力] タブに表示されます。ここでパラメーターを作成します。

      ユーザーは、[入力パラメーター] タブに値を入力します。これらの入力パラメーターを、[入力] タブのパラメーターにマップできます。これを行うには、[入力パラメーター] タブから [マッピング] 値を [] フィールドにコピーします。 ステップ > 入力 タブに戻ります

      このステップでスクリプトを呼び出し、そのスクリプトで値を返す引数が必要とされる場合は、各引数に新しい入力パラメーターを追加できます。[] フィールドで、構文 ${parameter.arg1} を使用します。

    9. [操作] の下にある [ステップ] サブタブをクリックします。
    10. [ステップを追加] をクリックします。
    11. フォームフィールドに記入します。
      フィールド 説明
      操作タイプ

      操作のタイプを選択します。

      クラウド API の呼び出し (Invoke Cloud API):CAPI からプロバイダー、インターフェイス、およびメソッドを選択するには、このオプションを選択します。

      API プロバイダー

      必要なインターフェイスを提供する API を選択します。プロバイダはクラウド API (CAPI) の一部です。

      たとえば、CAPI は、構成オーケストレーションインターフェイスを提供する Terraform OpenSource プロバイダを提供します。

      この値は、[クラウド API の呼び出し (Invoke Cloud API)] 操作タイプを選択した場合に表示されます。

      API インターフェイス 使用するメソッドを含むインターフェイスを選択します。この例では、構成オーケストレーションインターフェイスにより、システムがプロビジョニング中に使用する複数のインターフェイスまたはメソッドが提供されます。
      API メソッド 操作を実行するメソッドを選択します。この例では、Terraform テンプレートをプロビジョニングするために ExecuteCommand が必要です。
      CAPI バージョン CAPI API のバージョンを入力します。
      条件 システムがこのステップを使用する前に、満たす必要があるオプションの条件を入力します。
    12. [送信] をクリックします。

      ステップの [入力] および [応答プロセッサ] タブが表示されます。

    13. [入力] タブで、CAPI 操作入力を設定します。

      CAPI インターフェイス (この場合は 構成 Orchestration インターフェイス) で、ExecuteCommand メソッドを開きます。CAPI からの入力が [入力] タブに表示されます。ここでパラメーターを作成します。

      [入力パラメーター] タブのパラメーターは、ユーザーが値を入力する場所です。これらの入力パラメーターを、[入力] タブのパラメーターにマップできます。[Input Parameters] タブから [Value] フィールドにマッピング値をコピーします。 ステップ > 入力 タブに戻ります

      このステップでスクリプトを呼び出し、そのスクリプトで値を返す引数が必要とされる場合は、各引数に新しい入力パラメーターを追加できます。[] フィールドで、構文 ${parameter.arg1} を使用します。

      注:
      次のテーブルに示すように、値を次のパラメーターにマップします。
      パラメーター
      AdditionalParameters 次のスクリプトを入力します。
      {"ServerType":"$(Script:sn_cmp_terraform.TerraformCommandUtils.
      getConfigProviderServerTypeByName[arg=${parameter.WorkloadConfigProvider}])"}
      ConfigMgmtProviderInfo
      $(capiResolver.NodeCredentialResolver#nodeCredentialId=$(ci.sn_cmp_wl_cfg_mgmt_provider
      [name=${parameter.WorkloadConfigProvider}].credential))
      ノードアドレス
      $(ci.cmdb_ci_workload_config_provider[name=${parameter.WorkloadConfigProvider}].url)
      スクリプト

      CreateStack 操作の場合

      ${CloudScript.scripts.TerraformDeploy}
      スクリプト

      DeleteStack 操作の場合

      ${CloudScript.scripts.DestroyTerraform}
    14. [応答プロセッサー] タブで、リソーススクリプトをアタッチして応答プロセッサーを構成します。
      リソースブロックの作成中に、リソースブロックにリソーススクリプトを追加しています。
    15. [操作] リストから、[CreateStack] または [DeleteStack] 操作を選択します。
    16. [応答プロセッサーの追加][応答プロセッサーの追加] 追加アイコンをクリックします。
    17. [リソーススクリプト] サブタブをクリックし、[新規] をクリックします。
    18. フォームに入力します。
      表 : 1. 新規レコード
      フィールド 説明
      名前 リソーススクリプトの名前 (たとえば、Create_AzureTF_Stack_Response_Processor) を入力します。
      タイプ スクリプトのタイプ ([応答プロセッサー]) を選択します。
      スクリプト

      作成用リソーススクリプト

      次のスクリプトを入力します。
      function processResponse (response, cloudServiceAccountId, ldc,
      						  correlationId, step, requestorContext, stackId) {
      	var responseObject = global.JSON.parse(response);
      	var tfState = global.JSON.parse(responseObject.terraform.state);
      	var processor = new sn_cmp_terraform.TerraformResponseProcessor();
      	var processedResponses = processor.processResponse(tfState, cloudServiceAccountId,  ldc,
      							   correlationId, step, requestorContext, stackId);
      	return global.JSON.stringify(processedResponses);
      }
      
      スクリプト

      削除用リソーススクリプト

      次のスクリプトを入力します。
      function processResponse (response, cloudServiceAccountId, ldc,
      						  correlationId, step, requestorContext, stackId) {
      	var responseObject = global.JSON.parse(response);
      	var tfState = global.JSON.parse(responseObject.terraform.state);
      	var processor = new sn_cmp_terraform.TerraformResponseProcessor();
      	var processedResponses = processor.processResponse(tfState, cloudServiceAccountId,  ldc,
      							   correlationId, step, requestorContext, stackId);
      	return global.JSON.stringify(processedResponses);
      }
      
    19. [スクリプト名] リストで、選択した操作に対応するスクリプトを選択し、[送信] をクリックします。
    20. リソースブロックのステータスを [ドラフト] から [公開] に移行します。
      データセンターのリソースブロックはドラフトから公開ステータスに移行し、リソースブロックにそれ以上変更を加えることはできなくなります。リソースブロックを変更できるのは、ステータスを [ドラフト] に設定した後のみです。