IBM Cloud Docs
Terraformを使ってCIツールチェーンをセットアップする

Terraformを使ってCIツールチェーンをセットアップする

このチュートリアルでは、Security and Compliance Center の継続的インテグレーション (CI) 用ツールチェーンテンプレートと、DevSecOps の Infrastructure as Code (IaC) 用 Terraform の関連プラクティスを使用できます。 インベントリの統合、Git Repos and Issue Tracking による変更管理、エビデンスの収集、IBM Cloud へのインフラストラクチャのデプロイメントなど、継続的デプロイメント (CD) 用にあらかじめ構成されています。

開始前に

このチュートリアルを始める前に、以下のステップを完了してください。

  1. 前提条件の設定 を完了します。 詳しくは、IaC を参照のこと。
  2. IBM CloudでDevSecOpsを始めよう - 前編 のビデオを見る。

CI ツールチェーンのセットアップの開始

Continuous Deliveryサービスは、ツールチェーンのセットアップをガイドし、論理的な順序でプロセスを作成するテンプレートを提供します。 進行標識に、構成を実行するための各手順が示されます。 CIツールチェーンのテンプレートにアクセスするための手順に従ってください。

  1. IBM Cloud コンソールにアクセスします。
  2. メニュー メニューアイコン をクリックし、DevOps を選択します。
  3. 「ツールチェーン」ページで、**「ツールチェーンの作成」**をクリックします。
  4. Infrastructure as Code をチェックしてください。
  5. CI - DevSecOps のプラクティスでコードとして安全なインフラストラクチャを開発するタイルをクリックします。

CIツールチェーンの設定

ようこそのページには、ドキュメントや関連資料へのポインタとともに、ツールチェーンの目的が要約されています。

  1. **「Start」**をクリックします。

  2. IBM Cloudに、同じリージョンとリソースグループのツールチェーン内のツールチェーン名を入力します。

  3. ドロップダウンリストから地域を選択します。

  4. ドロップダウンリストからリソースグループを選択します。

  5. 「続行」 をクリックします。

    現在の手順の構成が完了し、有効である場合にのみ、次の手順に進むことができます。 戻る をクリックすると、ガイド付きインストーラの前のステップをいつでも見ることができます。 一連の手順で入力した構成値はすべてツールチェーン・インストーラーに保存されています。

    いくつかのステップには、詳細設定に切り替えるトグルボタンがあります。 デフォルトでは、これらのステップで最小限のコンフィギュレーションが表示されます。 しかし、より細かい制御を必要とする上級ユーザーは、Switch to advanced configuration トグルをクリックして、基盤となる統合のオプションを表示することができます。

CIツールの統合を設定する

デフォルトの設定を確認し、CIツールとの統合を設定するために必要なユーザー定義の設定を行う。 セットアップ中に複数のリポジトリを設定します。 サンプル・リポジトリーを複製することも、独自のリポジトリーを使用することもできますが、ツールチェーンは Git Repos and Issue Tracking リポジトリーのみをサポートします。

インフラストラクチャー・コード

インフラストラクチャコードリポジトリは、CIツールチェーンとパイプラインがビルドし、テストし、ターゲット成果物を提供するプロジェクトまたはモジュールである。 インフラコードリポジトリはGitHub Enterpriseにホストされています。 一貫性を保つために、このチュートリアルでは Git Repos and Issue Trackingを参照します。

インフラコードのデフォルト情報を確認する:

  1. デフォルトのサンプルを使用する. 既存の IaC リポジトリをツールチェーンにリンクする場合は、Bring your own infrastructure code を選択し、Repository URL フィールドに入力してください。 ツールチェーンは現在、既存のGit Repos and Issue Trackingリポジトリへのリンクのみをサポートしています。 詳細については、 独自のインフラストラクチャ コードを DevSecOpsを参照してください。
  2. 新しいリポジトリ名に名前を入力します。
  3. 「続行」 をクリックします。

インベントリー

インベントリ・リポジトリは、CIツールチェーンによって作成された成果物の詳細を記録する。

  1. テンプレートで提供されるデフォルトの設定を受け入れることができます。
  2. 「続行」 をクリックします。

問題

問題リポジトリーには、CI パイプラインの実行中に検出された問題が記録されます。

  1. テンプレートで提供されるデフォルトの設定を受け入れることができます。
  2. 続行をクリックする

秘密

Managing IBM Cloud secrets で説明するように、トグルを使用してツールチェーンに追加する秘密のデータ保管庫統合を指定します。

  1. このチュートリアルでは、シークレットのボールトとして IBM Cloud® Secrets Manager を使用します。 「地域」「リソース・グループ」、および 「サービス名」 の各フィールドには、選択可能な項目に基づいて自動的にデータが取り込まれます。 ドロップダウン・インディケーターをクリックして、他の選択項目を表示します。
  2. Secrets Manager インスタンス名を入力します。
  3. ドロップダウンリストから認証タイプを選択します。
  4. 「続行」 をクリックします。

エビデンス・ストレージ

エビデンス リポジトリには、DevSecOps CI パイプラインによって生成されたすべてのエビデンスと成果物が格納されます。

  1. IBM Cloud Object Storageバケットスライダを切り替えて、次のページで設定できるIBM Cloud Object Storageバケットにすべての証拠を保存します。
  2. デフォルト設定を受け入れる。
  3. 「続行」 をクリックします。

クラウド Object Storage バケット

IBM Cloud Object Storage インスタンスバケツ がなければ、コンプライアンス・エビデンス・ロッカーとして機能しません。

  1. Cloud Object Storageインスタンスバケット名CloudObject Storageエンドポイントフィールドは自動的に入力されます。
  2. サービスID APIキーを入力します。
    • 好ましい:既存の鍵は、鍵アイコンをクリックすることで、秘密データ保管庫からインポートできます。
    • 既存のキーをコピー&ペーストすることもできる。
  3. 「続行」 をクリックします。

エンドポイント・フィールドは必須ではない。 ツールチェインのセットアップ中またはパイプラインの実行中に、エンドポイントを選択または指定できます。

デプロイ

Terraform の状態を保持する Schematics ワークスペースを設定します。 ワークスペース名が与えられない場合、toolchainはデフォルトのSchematicsワークスペースを ToolchainName-ToolchainId-PipelineID で作成します。

  1. IBM Cloud API Key を入力します。 APIキーに十分なアクセス権がある場合。 Schematicsワークスペース、Gitリポジトリリソースグループの詳細が自動的に入力されます。 これらのフィールドは、あなたの設定に合わせて変更することができます。

    • 好ましい:既存の鍵は、鍵アイコンをクリックすることで、秘密データ保管庫からインポートできます。
    • 既存のキーをコピー&ペーストすることもできる。
    • New + をクリックすると、ここから新しいキーを作成できます。

    新しく生成されたAPIキーは、すぐに秘密の保管庫に保存することができる。

  2. 回路図ワークスペース名を入力します。

  3. 「続行」 をクリックします。

署名

ツールチェーンによって作成され、インベントリに記録された成果物は、本番環境にデプロイされる前に署名されなければならない。

  1. GnuPG秘密鍵を入力する。 あるいは、NEW をクリックして新しいGPGキーを作成することもできます。 詳しくは、GPGキーを生成する を参照してください。
  2. 「続行」 をクリックします。

オプションのツール

Slack

Slack に、プルリクエストやCIパイプラインのイベントに関する通知を受け取るように設定します。 ツールチェーン作成後にSlackツールを追加することもできる。

  1. あなたの Slackウェブフックを入力してください。 詳しくは Slackウェブフック をご覧ください。
  2. メッセージを投稿するには、スラックチャンネルを入力してください。
  3. スラックチーム名を入力します。 例えば、チームのURLが https://team.slack.com の場合、チーム名は team となります。
  4. 通知を受け取りたいイベントの自動Slack通知を選択します。
  5. 「続行」 をクリックします。

オプションで、slack-notifications 環境プロパティを使って、CDパイプラインで 0 = off, and 1 = on 通知を送るかどうかを切り替えることができます。

CI ツールチェーンの作成

  1. 「要約」ページで、**「ツールチェーンの作成」**をクリックします。

  2. ツールチェーンの作成を待つ。

    その他のツールチェーンとの統合は、パイプラインの作成後に設定できる。

CI ツールチェーンの探索

CI toolchainには pr-pipelineci-pipeline があります。 これらのパイプラインは、新しいマージリクエストが提出されたり、インフラストラクチャコードリポジトリのメインブランチにマージされたりしたときにトリガーされます。

手順に従い、ツールチェーンにアクセスしてください:

  1. IBM Cloud コンソールから。

  2. メニュー メニューアイコン > DevOps を選択します。

  3. 「ツールチェーン」ページで、**「ツールチェーンの作成」**をクリックします。

  4. ツールチェインをクリックすると、画面キャプチャのように出力が表示されます。

    このチュートリアルで使用するサンプルでは、Key Protect インスタンスを作成するために resource_group を想定しています。 デフォルトの resource_group 名は Default です。 デフォルトがあなたのアカウントに適切でない場合は、variables.tf ファイルでデフォルトの resource_group 変数を置き換えてください。 そうでなければ、PRパイプラインとCIパイプラインの TF_VAR_resource_group 環境プロパティを適切なリソースグループ名に設定して、resource_group 変数を指定します。

    DevSecOps IaC CIツールチェーン
    図1。 DevSecOpsのCIツールチェーン

pr パイプラインの実行

pr-pipeline を開始するには、アプリケーションリポジトリにマージリクエストを作成します:

  1. CI toolchainページから、アプリケーションリポジトリタイルをクリックします。 デフォルトでは、compliance-app-<timestamp> という名前で作成されます。

  2. メイン・ブランチからブランチを作成します。

  3. アプリケーションのコードを更新するか、readmeファイルを追加して変更を保存する。

  4. マージリクエストを送信します。

  5. CI toolchainページで、pr-pipeline タイルをクリックします。 PRパイプラインがマージリクエストの作成によってトリガーされることを確認してください。

  6. pr-pipeline の実行が完了するまで待つ。 アプリケーションリポジトリにある対応するマージリクエストは、PRパイプラインのすべてのステージが正常に終了するまで、Pending の状態になります。

  7. PRパイプラインの実行が成功したら、パイプラインをクリックして完了した多数のステップを確認し、画面キャプチャのようなページを表示します。

    DevSecOpsIaCPRパイプラインの成功
    図2。 DevSecOpsPRパイプラインは成功

  8. マージリクエストに戻ります。

  9. 変更をアプリケーションリポジトリのメインブランチにコピーするように、リクエストをマージします。 CIパイプラインが自動的にトリガーされることを確認する。

CI パイプラインの実行

以下のいずれかの方法で CI パイプラインを開始します。

  • 自動的に: PRパイプラインが成功した後、PRを承認してメインブランチにマージします。
  • 手動: CIパイプラインを手動でトリガーするには、Delivery Pipeline カードを選択し、Run Pipeline をクリックし、Manual Trigger を選択します。

このチュートリアルでは、コードの変更をアプリケーションリポジトリのmasterブランチにマージした後にCIパイプラインが起動しました。

  1. CI toolchain ページで、ci-pipeline タイルをクリックします。

  2. パイプライン名に対して実行をクリックします。 パイプラインの実行を観察する。 パイプラインの実行が完了するのを待つ。

  3. CIパイプラインの実行が成功したら、パイプラインをクリックして完了したステップを探索し、画面キャプチャのようなページを表示する。

    DevSecOps IaC CIパイプラインの成功
    図3. DevSecOpsCIパイプライン

CIパイプラインのすべてのコンプライアンスチェックの証拠は、証拠ロッカーリポジトリにアップロードされますが、IBM Cloud Object Storageバケットにもアップロードされます。

パイプラインの実行に失敗があるかどうかを評価するには、パイプラインの最終ステップをチェックします。

パイプラインのカスタマイズ

パイプラインのカスタマイズについての詳細は、ユーザーがパイプラインをカスタマイズするには?

次のステップ

あなたは Terraform 用の DevSecOps CI ツールチェインを作成し、インフラストラクチャのコードリポジトリでコードを編集し、ci-pipeline を実行してビルド、テスト、および開発環境への変更をデプロイすることに成功しました。

では、Terraform用のCDツールチェーンをセットアップする まで探索しましょう。