環境の作成

プロジェクト内で、関連する設定をグループ化し、それら間で値を共有できる環境を構築し、デプロイを容易にします。 環境に追加したプロパティは、その環境を使用している構成に自動的に追加されます。 構成内で、環境によって提供されるすべての値をオーバーライドできます。 詳細については、 環境を使用する利点 をご覧ください。

設定を編集する際、 [詳細の定義] セクションで設定に使用する環境を選択できます。

開始前に

IBM Cloud® Projects サービスで環境を作成および編集するには、Editor ロール以上の権限が必要です。 アクセスと権限の詳細については、 「プロジェクトへのユーザーアクセス権の割り当て」 を参照してください。

コンソールを使用して環境を作成する

プロジェクトから環境を作成するには、次の手順を完了してください:

  1. コンソール IBM Cloud で、アイコン ナビゲーションメニュー をクリックし、プロジェクト ナビゲーションメニューアイコンメニュー を選択します プロジェクト
  2. [管理] タブから、 [環境] を選択します。
  3. 「作成」 をクリックします。
  4. 環境の名前を入力し、 [追加] をクリックしてプロパティを追加します。

環境に追加できるプロパティには、認証、コンプライアンス、入力の3つのカテゴリがあります。 これらのプロパティを手動で追加することも、プロジェクトの設定から複数のプロパティを一度に追加することもできます。

プロパティを手動で追加する

プロパティを手動で追加する場合は、まず認証方法を追加することを検討してください。 対象アカウントへのデプロイを承認するには、その対象アカウントの認証方法が必要です。 認証方法は、ターゲットアカウントから Workload Protection ポリシーを取り込む場合にも使用されます。 環境に追加できる認証プロパティは1つだけです。また、コンプライアンスプロパティを環境に追加するには、使用したいターゲットアカウントに Workload Protection インスタンス、ゾーン、ポリシーが存在している必要があります。 Workload Protection インスタンスも CSPM に対応している必要があります。 デプロイ可能なアーキテクチャのデフォルト制御 を使用するコンプライアンス プロパティを追加することはできません。これらのデフォルト制御はアーキテクチャごとに異なるためです。

コンプライアンスプロパティを追加し、 Workload Protection からポリシーを指定したい場合は、まず環境内に有効な認証情報を含む認証プロパティを設定する必要があります。 Secrets Manager で API キーを使用 するか、 Workload Protection 添付ファイルを含む対象アカウントへの認証に 信頼済みプロファイルを使用 できます。

認証およびコンプライアンス情報はすべての構成で使用されるため、環境に認証プロパティまたはコンプライアンスプロパティを追加すると、その環境を使用しているすべての構成に自動的に追加されます。

入力値は環境のプロパティとして追加することもできます。 環境に入力を追加する場合、その環境内の入力名は、その環境を使用している構成内の入力名と一致している必要があります。 名前が一致しない場合、環境変数からの値は設定で使用されません。 例えば、環境にインプットを追加して を名前として指定した場合 resource_group、その環境を使用している構成に という名前のインプットが存在 resourcegroup すると、その構成では環境からの値は使用されません。

複数のアーキテクチャが同じ環境を使用できますが、類似した値に対してすべてのアーキテクチャが同じ入力名を持つわけではありません。 環境には、同じ値を持つ複数の入力項目を追加できますが、名前はそれぞれ異なる必要があります。 たとえば、2つの入力プロパティを追加し、一方を resource_group 、もう一方を と名付ける resourcegroup ことができます。 両方のプロパティの値を同じに保ってください。 環境を使用している設定で、入力 resource_group 名または入力 resourcegroup 名を持つものは、環境から同じ値を使用します。

プロパティを手動で追加するには、以下の手順を実行します:

  1. 環境を作成したら、その環境の編集アイコン をクリックしてください。

  2. 追加 > 手動で追加... をクリックします

  3. 追加したい物件のカテゴリーを選択してください。

    まず、対象アカウントの有効な認証情報を含む認証プロパティの追加をご検討ください。

  4. 物件の詳細を入力し、 「追加」 をクリックしてください。

  5. 保存 をクリックします。

設定からプロパティを追加する

設定から環境に複数のプロパティを追加することで、時間を節約し、エラーを減らせます。 これにより、入力される名前と値が選択した構成から直接取得されるため、プロパティがお客様の環境において正確であることを保証するのに役立ちます。 設定からプロパティを追加した後、設定に影響を与えることなく環境内でそれらを編集できます。 今後、設定を編集しても、環境のプロパティには影響しません。

設定から複数のプロパティを追加するには、次の手順を完了してください:

  1. 環境を作成したら、その環境の編集アイコン をクリックしてください。
  2. 追加 > 設定から追加… をクリック
  3. 環境へプロパティを追加するために使用する構成を選択してください。
  4. 環境へ追加したい設定項目を選択し、「 追加」 をクリックしてください。

CLIを使った環境構築

CLIを使用して環境を作成するには、次の ibmcloud project environment-create コマンドを実行します:

ibmcloud project environment-create --project-id PROJECT-ID [--definition DEFINITION]

内で、オプション inputs を使用して、環境に含まれる入力プロパティを指定できます。 definition 同様に、環境内で認証プロパティを指定するには、内の authorizations オプションを使用 definition します。 また、コンプライアンスプロパティを追加するには、オプション compliance-profile を内に含めることもできます definition

たとえば、次のコマンドは、 development という名前の環境を作成し、リソースグループを定義する入力プロパティを1つ持つ環境を作成します:

ibmcloud project environment-create \
     --project-id exampleString \
     --definition '{"name": "development", "inputs": {"resource_group" : "stage"}}'

同様に、次のコマンドは という名前の環境を作成し、リソースグループを定義 development する入力プロパティを1つ持ちます。 信頼済みプロファイル も認証プロパティとして提供されます:

ibmcloud project environment-create \
     --project-id exampleString \
     --definition '{
    "name": "development",
    "authorizations": {
      "method": "trusted_profile",
      "trusted_profile_id": "<trusted-profile-id>"
    },
    "inputs": {
      "resource_group": "stage"
    },
    "compliance_profile": {
      "id": "<profile-id>",
      "instance_id": "<instance-id>",
      "instance_location": "us-south",
      "profile_name": "{\"instance_crn\":\"crn:v1:staging:public:compliance:us-south:a/<account>:<instance-id>::\",\"instance_label\":\"compliance\",\"name\":\"Basic Control\",\"version\":\"1.0.0\",\"attachment_label\":\"basic\"}",
      "attachment_id": "<attachment-id>"
    }
  }'

コマンドパラメータの詳細については、を参照してください ibmcloud project environment-create

APIを使って環境を作る

以下のサンプルリクエストに示すように、 Projects API を呼び出すことでプログラムによって環境を作成できます。 この例では、という名前の環境を作成し、2つの入力プロパティ(1つはリソース development グループを定義し、もう1つはリージョンを定義する)を持ちます:

curl -X POST --location --header "Authorization: Bearer {iam_token}" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{ "definition": { "name": "development", "description": "The environment 'development'", "authorizations": { "method": "api_key", "api_key": "TbcdlprpFODhkpns9e0daOWnAwd2tXwSYtPn8rpEd8d9" }, "inputs": { "resource_group": "stage", "region": "us-south" }, "compliance_profile": { "id": "some-profile-id", "instance_id": "some-instance-id", "instance_location": "us-south", "profile_name": "some-profile-name", "attachment_id": "some-attachment-id" } } }' \
  "{base_url}/v1/projects/{project_id}/environments"