Terraform for Continuous Delivery のセットアップ

Continuous Delivery 2027年2月12日より、以下の地域において提供が終了となります: au-sydca-torus-east。 また、同日をもって、Code Risk Analyzerもすべての地域で提供を終了いたします。 あるリージョンでこれらの機能が実際に利用されていない場合、そのリージョンにおける機能は早期に提供終了となり、新しいインスタンスの受け入れが停止される可能性があります。 詳細はこちら

IBM Cloud® 上のTerraformを利用することで、 IBM Cloud サービスの予測可能かつ一貫性のある構築が可能となり、Infrastructure as Code( IaC )の原則に従って、複雑で多層的なクラウド環境を迅速に構築できます。 IBM Cloud のCLIやAPI、SDKを使用する場合と同様に、 HashiCorp Configuration Language(HCL)を使用することで、 IBM Cloud® Continuous Delivery インスタンスの作成、更新、削除を自動化できます。

管理対象の Terraform on IBM Cloud® ソリューションをお探しですか? IBM Cloud® Schematics をお試しください。 Schematics を使用すれば、Terraform コマンドラインや「 IBM Cloud® 」プロバイダプラグインの設定や保守を気にすることなく、使い慣れた Terraform スクリプト言語を利用できます。また、 Schematics には、 IBM Cloud® カタログから簡単にインストールできる、あらかじめ定義された Terraform テンプレートが用意されています。

Terraform のインストールと Continuous Delivery 用のリソースの構成

開始する前に、 continuous-delivery リソースを作成して操作するために 必要なアクセス権限 、および toolchain リソースを作成して操作するために 必要なアクセス権限 があることを確認してください。

  1. Terraform on IBM Cloud 入門チュートリアルに従って、Terraform CLI をインストールして Terraform 用の IBM Cloud Provider プラグインを構成します。 このプラグインは、 continuous-delivery サービスのインスタンスや toolchain リソースの作成、更新、削除に使用される IBM Cloud のAPIを抽象化しています。

  2. main.tfという名前の Terraform 構成ファイルを作成します。 このファイルに、HCL を使用して、 Continuous Delivery のサービスインスタンスを作成し、 Identity and Access Management (IAM)でそのインスタンスに対するアクセスポリシーをユーザーに割り当てるための設定を追加してください。 また、 Continuous Delivery サービス・インスタンスと同じリソース・グループおよび地域に基本ツールチェーン・リソースを作成し、そのリソースの IAM でユーザーにアクセス・ポリシーを割り当てるための構成を追加します。 ツールチェーンと、ツールチェーンの使用を管理する Continuous Delivery サービス・インスタンスは、同じリソース・グループおよびリージョンにあります。 Terraform 構成ファイルの操作について詳しくは、 Terraform の資料を参照してください。

    以下の例の Continuous Delivery サービス・インスタンスの名前は my_cd です。 これは、 default リソース・グループおよび us-south 領域で、プロフェッショナル料金プランを使用して作成されます。 ユーザー user1@ibm.com には、サービス・インスタンスの IAM アクセス・ポリシーで管理者役割が割り当てられます。

    ツールチェーン・リソースの名前は my_toolchain です。 これは、 default リソース・グループ内、および provider.tf ファイルの provider "ibm" ブロックで指定された領域内に作成されます。 この例では、 provider.tf 内の regionus-south に設定されています。 ユーザー user2@ibm.com には、ツールチェーン・リソースの IAM アクセス・ポリシーでのエディター役割が割り当てられます。

    data "ibm_resource_group" "default_rg" {
      name = "default"
    }
    resource "ibm_resource_instance" "cd_instance" {
      name              = "my_cd"
      service           = "continuous-delivery"
      plan              = "professional"
      location          = "us-south"
      resource_group_id = data.ibm_resource_group.default_rg.id
    }
    resource "ibm_iam_user_policy" "cd_policy" {
      ibm_id = "user1@ibm.com"
      roles  = ["Manager"]
      resources {
        service              = "continuous-delivery"
        resource_instance_id = element(split(":", ibm_resource_instance.cd_instance.id), 7)
      }
    }
    resource "ibm_cd_toolchain" "toolchain_instance" {
      name              = "my_toolchain"
      resource_group_id = data.ibm_resource_group.default_rg.id
    }
    resource "ibm_iam_user_policy" "toolchain_policy" {
      ibm_id = "user2@ibm.com"
      roles  = ["Editor"]
      resources {
        service              = "toolchain"
        resource_instance_id = ibm_cd_toolchain.toolchain_instance.id
      }
    }
    
  3. Terraform CLI を初期設定します。

    terraform init
    
  4. Terraform 実行プランを作成します。 Terraform 実行プランでは、アカウントで Continuous Delivery サービス・インスタンス、ツールチェーン・リソース、および関連する IAM アクセス・ポリシーを作成するために実行する必要があるすべてのアクションが要約されています。

    terraform plan
    
  5. IBM Cloudのアカウントで、 Continuous Delivery サービス・インスタンス、ツールチェーン・リソース、および関連する IAM アクセス・ポリシーを作成します。

    terraform apply
    
  6. IBM Cloud リソース・リストで、「開発者ツール」セクションを展開し、作成した Continuous Delivery サービス・インスタンスを選択して、インスタンス ID をメモします。

  7. アクセス・ポリシーが正常に割り当てられていることを確認します。 アクセス・ポリシーの割り当てについて詳しくは、 コンソールでの割り当てられたアクセス権限の確認 を参照してください。

  8. IBM Cloud リソース・リストで、「開発者ツール」セクションを展開してから、作成したツールチェーン・リソースを選択し、インスタンス ID をメモします。

  9. アクセス・ポリシーが正常に割り当てられていることを確認します。

Terraform で Continuous Delivery サービスインスタンスの Platform Logs を有効にする

Continuous Delivery サービスは、Tekton PipelineRun のログをプラットフォームのログとして送信する機能をサポートしています。 これにより、現在のリージョンおよびリソースグループのすべての Tekton PipelineRun ログをアカウント受信することができ、これらの受信ログを IBM Cloud Logs などのターゲットに転送するようにアカウント設定できます。

  1. Terraformのコンフィギュレーションファイルで、コンフィギュレーションを調整して、 platform_logging_pipelineruns_enabled パラメータに true という値を含める。

    data "ibm_resource_group" "group" {
      name = "default"
    }
    resource "ibm_resource_instance" "cd_instance" {
      name              = "my_cd"
      service           = "continuous-delivery"
      plan              = "professional"
      location          = "us-south"
      resource_group_id = data.ibm_resource_group.default_rg.id
      parameters = {
        platform_logging_pipelineruns_enabled = "true"
      }
    }
    

次のステップ

IBM Cloud にて、Terraform を使用して最初の Continuous Delivery サービスインスタンスとツールチェーンリソースの作成に成功したところで、以下のタスクから選択することができます:

IBM Cloud プロバイダーのリソースおよびデータ・ソースについて詳しくは、 Terraform レジストリーの資料を参照してください。