ツールチェーンの保存と復元
Terraform を使用して定義されていないツールチェーンなど、既存のツールチェーンがある場合は、既存のツールチェーンのバックアップを保存してから、代替リージョンにコピーをリストアすることができます。 Git Repos and Issue Trackingを使用する場合は、 Git リポジトリーを 1 次リージョンから代替リージョンにミラーリングする こともできます。
ツールチェーンを保存するには、テキスト形式でツールチェーン・テンプレートを作成するスクリプトをローカル・ワークステーションにダウンロードして実行します。 このテンプレートは、ソース・ツールチェーンのコピーをインスタンス化するために使用されます。 セキュリティー上の理由で、シークレットはこのツールチェーン・テンプレートに含まれません。
このテンプレートを使用してツールチェーンを作成した後、ツール統合を構成する必要があります。 次に、ソース・ツールチェーンからターゲット・ツールチェーンに値をコピーして、ソース・ツールチェーンからシークレットを復元します。 GitLab ミラーリングとは異なり、この手順では、ツールチェーンのワンタイム・コピーが作成されます。 ソース・ツールチェーンへのそれ以降の変更は、コピーされたバージョンのツールチェーンには反映されません。
ツールチェーン・テンプレートはコピーであるため、インスタンス化時に、ソースの Git リポジトリーを参照します。 この問題を修正するには、ターゲット・リポジトリーを使用してターゲット・ツールチェーンを再構成します。
ツールチェーンを保存および復元するには、以下の手順を実行します。
-
ローカル・ワークステーション上に一時ディレクトリーを作成します。
-
ディレクトリーを一時ディレクトリーに変更します。
-
toolchain-to-templateスクリプトを使用して、一時ディレクトリにソース・ツールチェインのテキスト表現を生成する。
-
ターゲット・リージョンに一時ブランク GitLab プロジェクトを作成します。
-
以下のコマンドを入力して、Git 操作用の一時ディレクトリーを初期化し、その内容を一時 GitLab プロジェクトにプッシュします。
a. git init
b. git add -- all
c. git remote add origin ターゲット・リポジトリー URL
d. git commit -m "template yaml files の追加"
e. git push -u origin --all
-
api
、read_user
、read_api
、read_repository
、write_repository
のスコープで、対象地域に パーソナル・アクセストークンを作成する。 -
URL を構成し、それをブラウザーに貼り付けて、ターゲット・リージョンでツールチェーンを作成します。
a. 一時リポジトリー、パーソナル・アクセス・トークン、およびターゲット・リージョンを含むターゲット・ツールチェーン URL を作成します。
https://cloud.ibm.com/devops/setup/deploy?repository=<temporary repository>&repository_token=<personal-access-token>&env_id=ibm:yp:<target region>
例えば、
https://cloud.ibm.com/devops/setup/deploy?repository=https://us-east.git.cloud.ibm.com/user/temp-repo&repository_token=aG7junk9dafiiT6w6&env_id=ibm:yp:us-east
です。b. ソース・リポジトリーの URL を、Git リポジトリーをミラーリングするときに作成したターゲット・リポジトリーの URL で置換します。
c. 「作成」 をクリックします。 シークレットを更新しなかったため、パイプラインは実行されますが、成功しません。
-
手順6で作成した 個人アクセストークンを失効させます。
-
パイプラインに必要なセキュアなプロパティー値を追加して、パイプライン・シークレットを構成します。
-
ターゲット・パイプラインを実行して、それらが機能していることを確認します。
-
リポジトリーをミラーリングしている場合は、コミット・トリガーを無効にして、変更がターゲット・リポジトリーからソース・リポジトリーにミラーリングされたときにターゲット・パイプラインが実行されないようにします。
a. パイプラインの入力ステージの「このステージが手動で実行されたときにのみジョブを実行 (Run jobs only when this stage is run manually)」オプションを選択します。
b. パイプラインを手動で開始できることを検証します。
既知の制限事項
ツールチェーンをバックアップすると、ツールチェーン自体のコピーが作成されますが、ツールチェーンによって参照されるすべてのデータがコピーされるわけではありません。 ツールチェーンを別のリージョンにバックアップする場合は、以下の制限を考慮してください。
- パイプライン・ログおよび成果物は、コピーされたツールチェーンに含まれません。
- Key Protect または HashiCorp Vault に保存されているツール構成シークレットは、コピーされたツールチェーンに含まれません。
- DevOps Insights データは、コピーされたツールチェーンに含まれません。
ツールチェーンがこれらの制限を受ける場合は、ツールチェーンのそのような側面をスクリプトでバックアップ/リストアすることはできません。 元のツールチェーンが更新されるたびに、必ず、バックアップ・コピーも最新のものに更新する必要があります。
バックアップ・ツールチェーンの使用
バックアップまたは代替ツールチェーンは、特定の地域で問題が発生した場合に、短期的な継続性を提供することを目的としている。 ターゲット(代替)リポジトリに直接コミットしたり、ターゲットパイプラインでパイプラインコミットトリガーを有効にしたりしないでください。 ターゲット・レポに直接コミットし、その後ソース(プライマリ)レポの使用に戻ると、レポが同期されていないため、コンフリクトや不整合が発生するリスクがあります。 コミット・トリガーを有効にしてからソース・リポジトリーの使用に戻ると、コードが更新されたときに両方のパイプラインが実行されます。 これらのシナリオを回避するには、パイプラインを手動で実行し、できるだけ早くソース・ツールチェーンに戻ります。