创建环境

在项目内创建环境,将相关配置进行分组,并在它们之间共享值,以便更轻松地进行部署。 您添加到环境中的属性会自动添加到使用该环境的配置中。 在配置中,您可以覆盖环境提供的任何值。 有关更多信息,请参阅 使用环境的优势

编辑配置时,您可以在 “定义详细信息”部分为该配置选择一个环境。

准备工作

您必须在 IBM Cloud® 项目服务中拥有编辑器角色或更高权限,才能创建和编辑环境。 有关访问权限的更多信息,请参阅 《 为用户分配项目访问权限 》。

通过控制台创建环境

要从您的项目创建环境,请完成以下步骤:

  1. 在 IBM Cloud 控制台中,单击导航菜单图标 ,依次 > 项目 ,然后选择一个项目。
  2. 在“管理”选项卡中,选择 “环境”
  3. 单击创建
  4. 为您的环境命名,然后点击添加以添加属性。

您可以向环境添加三类属性:身份验证、合规性和输入。 您可以手动添加这些属性,或从项目配置中一次性添加多个属性。

手动添加属性

若需手动添加属性,请优先考虑添加身份验证方法。 目标账户的身份验证方式是授权向该目标账户部署所需的必要条件。 若需从目标账户获取 Workload Protection 策略,亦可采用此认证方式。 您只能向环境添加一个身份验证属性,并且只有在目标账户中存在所需使用的 Workload Protection 实例、区域和策略时,才能向环境添加合规性属性。 您的 Workload Protection 实例 也必须启用 CSPM。 您无法添加 使用可部署架构默认控件 的合规性属性,因为这些默认控件在不同架构中各不相同。

若需添加合规性属性并指定来自 Workload Protection 的策略,您必须先在环境中提供包含有效认证信息的认证属性。 您可以使用 API 密钥访问 Secrets Manager,或 使用可信配置文件 对目标账户进行身份验证,该账户包含您的 Workload Protection 附件。

身份验证和合规性信息适用于所有配置,因此若在环境中添加身份验证属性或合规性属性,该属性将自动添加至使用该环境的任何配置中。

输入值也可作为属性添加到你的环境中。 当您向环境添加输入时,该环境中输入的名称必须与使用该环境的配置中输入的名称一致。 如果名称不匹配,则配置中不会使用环境中的值。 例如,若你在环境中添加一个名为 resource_group 的输入,但某个使用该环境的配置中存在名为 resourcegroup 的输入,则该配置中不会使用环境中的值。

多种架构可以使用相同的环境,但并非所有架构对相似值都采用相同的输入名称。 你可以向环境中添加多个具有相同值但不同名称的输入项。 例如,你可以添加两个输入属性,并将 resource_group 其中一个命名为,另一个命名为 resourcegroup。 保持两个属性的值相同。 任何使用环境且具有 输入 resource_group 名称 或 输入 resourcegroup 名称 的配置,都将使用环境中的相同值。

要手动添加属性,请完成以下步骤:

  1. 创建环境后,请点击该环境的 编辑编辑图标 图标。

  2. 单击添加 > 手动添加...

  3. 选择您要添加的房产类别。

    请先考虑添加一个包含目标账户有效认证信息的认证属性。

  4. 请提供房产的详细信息,然后点击添加

  5. 单击保存

从配置中添加属性

通过从配置中向环境添加多个属性,节省时间并减少错误。 通过这种方式,您有助于确保属性在您的环境中准确无误,因为输入的名称和值直接取自您选择的配置。 添加配置中的属性后,您可以在环境中编辑这些属性,而不会影响您的配置。 今后对配置的编辑不会影响环境中的属性。

要从配置中添加多个属性,请完成以下步骤:

  1. 创建环境后,请点击该环境的 编辑编辑图标 图标。
  2. 点击添加 > 从配置中添加…
  3. 选择要用于向环境添加属性的配置。
  4. 从配置中选择要添加到环境中的项目,然后单击“添加”。

使用 CLI 创建环境

要通过命令行界面创建环境,请运行以下 ibmcloud project environment-create 命令:

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

在 中 definition,您可以通过使用 选项 inputs 来指定要包含在环境中的输入属性。 同样地,您可以在环境中通过在 内使用 选项 authorizations 来指定 definition 身份验证属性。 此外,您还可以在 中包含 选项 compliance-profile 来添加合规性属性。definition

例如,以下命令创建一个名为 development 的环境,该环境包含一个定义资源组的输入属性:

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

同样地,以下命令创建了一个名为 的环境,development 该环境包含一个输入属性,用于定义资源组。 还提供了一个 可信配置文件 作为身份验证属性:

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 程序化地创建环境,如下面的示例请求所示。 该示例创建了一个名为 development 的环境,该环境包含两个输入属性:一个用于定义资源组,另一个用于定义区域:

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"