Terraformを使ってCIツールチェーンをセットアップする
このチュートリアルでは、Security and Compliance Center の継続的インテグレーション (CI) 用ツールチェーンテンプレートと、DevSecOps の Infrastructure as Code (IaC) 用 Terraform の関連プラクティスを使用できます。 インベントリの統合、Git Repos and Issue Tracking による変更管理、エビデンスの収集、IBM Cloud へのインフラストラクチャのデプロイメントなど、継続的デプロイメント (CD) 用にあらかじめ構成されています。
開始前に
このチュートリアルを始める前に、以下のステップを完了してください。
CI ツールチェーンのセットアップの開始
Continuous Deliveryサービスは、ツールチェーンのセットアップをガイドし、論理的な順序でプロセスを作成するテンプレートを提供します。 進行標識に、構成を実行するための各手順が示されます。 CIツールチェーンのテンプレートにアクセスするための手順に従ってください。
- IBM Cloudコンソールで、メニューアイコン
>Platform Automation>Toolchains をクリックします。
- 「ツールチェーン」ページで、**「ツールチェーンの作成」**をクリックします。
- インフラストラクチャーをコードとしてチェックする。
- CI - DevSecOps のプラクティスでコードとして安全なインフラストラクチャを開発するタイルをクリックします。
CIツールチェーンの設定
ようこそのページには、ドキュメントや関連資料へのポインタとともに、ツールチェーンの目的が要約されています。
-
**「Start」**をクリックします。
-
IBM Cloudに、同じリージョンとリソースグループのツールチェーン内のツールチェーン名を入力します。
-
ドロップダウンリストから地域を選択します。
-
ドロップダウンリストからリソースグループを選択します。
-
「続行」 をクリックします。
現在の手順の構成が完了し、有効である場合にのみ、次の手順に進むことができます。 ガイド付きインストーラの前のステップを表示するには、いつでも「 戻る 」をクリックできます。 一連の手順で入力した構成値はすべてツールチェーン・インストーラーに保存されています。
いくつかのステップには、詳細設定に切り替えるトグルボタンがあります。 これらのステップは、デフォルトで最小限のコンフィギュレーションを提示する。 しかし、より細かなコントロールが必要な上級ユーザーは、 Switch to advanced configuration toggleをクリックすることで、基礎となる統合のオプションを表示することができます。
CIツールの統合を設定する
デフォルトの設定を確認し、CIツールとの統合を設定するために必要なユーザー定義の設定を行う。 セットアップ中に複数のリポジトリを設定します。 サンプル・リポジトリーを複製することも、独自のリポジトリーを使用することもできますが、ツールチェーンは Git Repos and Issue Tracking リポジトリーのみをサポートします。
インフラストラクチャー・コード
インフラストラクチャコードリポジトリは、CIツールチェーンとパイプラインがビルドし、テストし、ターゲット成果物を提供するプロジェクトまたはモジュールである。 インフラコードリポジトリはGitHub Enterpriseにホストされています。 一貫性を保つために、このチュートリアルでは Git Repos and Issue Trackingを参照します。
インフラコードのデフォルト情報を確認する:
- デフォルトのサンプルを使用する. ツールチェーンの既存の IaC リポジトリをリンクする場合は、「 Bring your own infrastructure code 」を選択し、「 Repository URL 」フィールドに入力します。 ツールチェーンは現在、既存の Git Repos and Issue Tracking リポジトリへのリンクのみをサポートしている。 詳細については 、「Bring your own infrastructure code to DevSecOps 」をご覧ください。
- 新しいリポジトリ名に名前を入力します。
- 「続行」 をクリックします。
インベントリー
インベントリ・リポジトリは、CIツールチェーンによって作成された成果物の詳細を記録する。
- テンプレートで提供されるデフォルトの設定を受け入れることができます。
- 「続行」 をクリックします。
問題
問題リポジトリーには、CI パイプラインの実行中に検出された問題が記録されます。
- テンプレートで提供されるデフォルトの設定を受け入れることができます。
- 続けるをクリック
秘密
Managing IBM Cloud secrets で説明するように、トグルを使用してツールチェーンに追加する秘密のデータ保管庫統合を指定します。
- このチュートリアルでは、シークレットのボールトとして IBM Cloud® Secrets Manager を使用します。 「地域」、 「リソース・グループ」、および 「サービス名」 の各フィールドには、選択可能な項目に基づいて自動的にデータが取り込まれます。 ドロップダウン・インディケーターをクリックして、他の選択項目を表示します。
- Secrets Manager インスタンス名を入力します。
- ドロップダウンリストから認証タイプを選択します。
- 「続行」 をクリックします。
エビデンス・ストレージ
エビデンス リポジトリには、DevSecOps CI パイプラインによって生成されたすべてのエビデンスと成果物が格納されます。
- IBM Cloud Object Storageバケットスライダを切り替えて、次のページで設定できるIBM Cloud Object Storageバケットにすべての証拠を保存します。
- デフォルト設定を受け入れる。
- 「続行」 をクリックします。
クラウド Object Storage バケット
IBM Cloud Object Storage インスタンス と バケツ がなければ、コンプライアンス・エビデンス・ロッカーとして機能しません。
- Cloud Object Storageインスタンス、バケット名、CloudObject Storageエンドポイントフィールドは自動的に入力されます。
- サービスID APIキーを入力します。
- 好ましい:既存の鍵は、鍵アイコンをクリックすることで、秘密データ保管庫からインポートできます。
- 既存のキーをコピー&ペーストすることもできる。
- 「続行」 をクリックします。
エンドポイント・フィールドは必須ではない。 ツールチェインのセットアップ中またはパイプラインの実行中に、エンドポイントを選択または指定できます。
デプロイ
Terraform の状態を保持する Schematics ワークスペースを設定します。 ワークスペース名が与えられない場合、toolchainはデフォルトのSchematicsワークスペースを ToolchainName-ToolchainId-PipelineID で作成します。
-
IBM Cloud API Keyを入力してください。 APIキーに十分なアクセス権がある場合。 Schematicsワークスペース、Gitリポジトリ、リソースグループの詳細が自動的に入力されます。 これらのフィールドは、あなたの設定に合わせて変更することができます。
- 好ましい:既存の鍵は、鍵アイコンをクリックすることで、秘密データ保管庫からインポートできます。
- 既存のキーをコピー&ペーストすることもできる。
- 新しいキーは、ここで「 New +」をクリックして作成できます。
新しく生成されたAPIキーは、すぐに秘密の保管庫に保存することができる。
-
回路図ワークスペース名を入力します。
-
「続行」 をクリックします。
署名
ツールチェーンによって作成され、インベントリに記録された成果物は、本番環境にデプロイされる前に署名されなければならない。
- GnuPG秘密鍵を入力する。 あるいは、NEW をクリックして新しいGPGキーを作成することもできます。 詳しくは、GPGキーを生成する を参照してください。
- 「続行」 をクリックします。
オプションのツール
Slack
Slack に、プルリクエストやCIパイプラインのイベントに関する通知を受け取るように設定します。 ツールチェーン作成後にSlackツールを追加することもできる。
- Slackのウェブフックを入力してください。 詳しくは Slackウェブフック をご覧ください。
- メッセージを投稿するには、スラックチャンネルを入力してください。
- スラックチーム名を入力します。 例えば、チーム名 URL が
https://team.slack.comの場合、チーム名はteamとなります。 - 通知を受け取りたいイベントの自動Slack通知を選択します。
- 「続行」 をクリックします。
オプションで、slack-notifications 環境プロパティを使って、CDパイプラインで 0 = off, and 1 = on 通知を送るかどうかを切り替えることができます。
CI ツールチェーンの作成
-
「要約」ページで、**「ツールチェーンの作成」**をクリックします。
-
ツールチェーンの作成を待つ。
その他のツールチェーン統合は、パイプラインを作成した後で設定できる。
CI ツールチェーンの探索
CI toolchainには pr-pipeline と ci-pipeline があります。 これらのパイプラインは、新しいマージリクエストが提出されたり、インフラストラクチャコードリポジトリのメインブランチにマージされたりしたときにトリガーされます。
手順に従い、ツールチェーンにアクセスしてください:
-
IBM Cloudコンソールで、メニューアイコン
>Platform Automation>Toolchains をクリックします。
-
「ツールチェーン」ページで、**「ツールチェーンの作成」**をクリックします。
-
ツールチェインをクリックすると、画面キャプチャのように出力が表示されます。
このチュートリアルで使用するサンプルでは、Key Protect インスタンスを作成するために
resource_groupを想定しています。 デフォルトのresource_group名はDefaultです。 デフォルトがあなたのアカウントに適切でない場合は、variables.tfファイルでデフォルトのresource_group変数を置き換えてください。 そうでなければ、PRパイプラインとCIパイプラインのTF_VAR_resource_group環境プロパティを適切なリソースグループ名に設定して、resource_group変数を指定します。
DevSecOps CIツールチェーン
pr パイプラインの実行
pr-pipeline を開始するには、アプリケーション・リポジトリにマージ・リクエストを作成します:
-
CI toolchainページから、アプリケーションリポジトリタイルをクリックします。 デフォルトでは、
compliance-app-<timestamp>という名前で作成されます。 -
メイン・ブランチからブランチを作成します。
-
アプリケーションのコードを更新するか、readmeファイルを追加して変更を保存する。
-
マージリクエストを送信
-
CI toolchainページで、 pr-pipeline タイルをクリックする。 PRパイプラインがマージリクエストの作成によってトリガーされることを確認してください。
-
pr-pipelineの実行が完了するまで待つ。 アプリケーションリポジトリにある対応するマージリクエストは、PRパイプラインのすべてのステージが正常に終了するまで、Pendingの状態になります。 -
PRパイプラインの実行が成功したら、パイプラインをクリックして完了した多数のステップを確認し、画面キャプチャのようなページを表示します。
DevSecOps PRパイプライン成功 -
マージリクエストに戻ります。
-
変更をアプリケーションリポジトリのメインブランチにコピーするように、リクエストをマージします。 CIパイプラインが自動的にトリガーされることを確認する。
CI パイプラインの実行
以下のいずれかの方法で CI パイプラインを開始します。
- 自動的に: PR パイプラインが成功した後、PR を承認してメインブランチにマージします。
- 手動: CIパイプラインを手動でトリガーするには、 Delivery Pipeline カードを選択し、 パイプラインの実行をクリックし、 手動トリガーを選択します。
このチュートリアルでは、コードの変更をアプリケーションリポジトリのmasterブランチにマージした後にCIパイプラインが起動しました。
-
CI toolchain ページで、 ci-pipeline タイルをクリックする。
-
パイプライン名に対して実行をクリックします。 パイプラインの実行を観察する。 パイプラインの実行が完了するのを待つ。
-
CIパイプラインの実行が成功したら、パイプラインをクリックして完了したステップを探索し、画面キャプチャのようなページを表示する。
DevSecOps CIパイプライン
CIパイプラインのすべてのコンプライアンスチェックの証拠は、証拠ロッカーリポジトリにアップロードされますが、IBM Cloud Object Storageバケットにもアップロードされます。
パイプラインの実行に失敗があるかどうかを評価するには、パイプラインの最終ステップをチェックします。
パイプラインのカスタマイズ
パイプラインのカスタマイズについての詳細は、ユーザーがパイプラインをカスタマイズするには?
次のステップ
あなたは Terraform 用の DevSecOps CI ツールチェインを作成し、インフラストラクチャのコードリポジトリでコードを編集し、ci-pipeline を実行してビルド、テスト、および開発環境への変更をデプロイすることに成功しました。
では、Terraform用のCDツールチェーンをセットアップする まで探索しましょう。