환경 작성
프로젝트 내에서 관련 구성 항목들을 그룹화하고, 배포를 용이하게 하기 위해 해당 항목들 간에 값을 공유할 수 있는 환경을 구축하십시오. 환경에 추가한 속성은 해당 환경을 사용하는 구성에 자동으로 추가됩니다. 구성 내에서 환경이 제공하는 값을 대체할 수 있습니다. 자세한 내용은 환경 사용의 이점을 참조하십시오.
구성을 편집할 때, '세부 사항 정의' 섹션에서 해당 구성이 사용할 환경을 선택할 수 있습니다.
시작하기 전에
IBM Cloud® Projects 서비스에서 환경을 생성하고 편집하려면 편집자 역할 이상을 보유해야 합니다. 프로젝트에 대한 사용자 접근 권한 부여에 대한 자세한 내용은 '프로젝트에 대한 사용자 접근 권한 부여'를 참조하십시오.
콘솔을 사용하여 환경 생성
프로젝트에서 환경을 생성하려면 다음 단계를 완료하십시오:
- IBM Cloud 콘솔에서 탐색 메뉴 아이콘
> 프로젝트를 클릭하고 프로젝트를 선택합니다.
- 관리 탭에서 환경을 선택합니다.
- 작성을 클릭하십시오.
- 환경에 이름을 지정한 후, 속성을 추가하려면 추가를 클릭하세요.
환경에 추가할 수 있는 속성은 세 가지 범주로 구분됩니다: 인증, 규정 준수, 입력. 이러한 속성을 수동으로 추가하거나, 프로젝트의 구성에서 한 번에 여러 속성을 추가할 수 있습니다.
속성을 수동으로 추가하기
수동으로 속성을 추가할 경우, 먼저 인증 방식을 추가하는 것을 고려하십시오. 대상 계정에 대한 배포를 승인하려면 해당 대상 계정의 인증 방법이 필요합니다. 인증 방법은 대상 계정에서 Workload Protection 정책을 가져오려는 경우에도 사용됩니다. 환경에는 하나의 인증 속성만 추가할 수 있으며, 대상 계정에 사용하려는 통합 관리 서비스( Workload Protection ) 인스턴스, 영역 및 정책이 있는 경우에만 환경에 규정 준수 속성을 추가할 수 있습니다. Workload Protection 의 인스턴스 도 CSPM을 위해 활성화되어야 합니다. 배포 가능한 아키텍처의 기본 컨트롤을 사용하는 준수 속성을 추가할 수 없습니다. 해당 기본 컨트롤은 아키텍처마다 다르기 때문입니다.
Workload Protection 에서 정책을 지정하고 규정 준수 속성을 추가하려면 먼저 환경에 유효한 인증 정보가 포함된 인증 속성을 제공해야 합니다. Secrets Manager 에서 API 키를 사용할 수 있으며, 또는 신뢰할 수 있는 프로필을 사용하여 Workload Protection 첨부 파일이 포함된 대상 계정에 인증할 수 있습니다.
인증 및 규정 준수 정보는 모든 구성에 사용되므로, 환경에 인증 속성이나 규정 준수 속성을 추가하면 해당 환경을 사용하는 모든 구성에 자동으로 추가됩니다.
입력 값은 환경의 속성으로도 추가할 수 있습니다. 환경에 입력을 추가할 때, 환경 내 입력의 이름은 해당 환경을 사용하는 구성 파일 내 입력의 이름과 반드시 일치해야 합니다. 이름이 일치하지 않으면 환경 변수의 값이 구성에 사용되지 않습니다. 예를 들어, 환경에 입력값을 추가하고 이를 resource_group 로 명명했지만, 해당 환경을 사용하는 구성에 로 명명된 입력값이 존재하는 경우, resourcegroup 해당 구성에서는 환경의 값이 사용되지 않습니다.
여러 아키텍처가 동일한 환경을 사용할 수 있지만, 유사한 값에 대해 모든 아키텍처가 동일한 입력 이름을 사용하는 것은 아닙니다. 동일한 값을 가지되 서로 다른 이름을 가진 여러 입력값을 환경에 추가할 수 있습니다. 예를 들어, 두 개의 입력 속성을 추가하고 하나는 resource_group 라고, 다른 하나는 resourcegroup 라고 이름을 지정할 수 있습니다. 두 속성의
값을 동일하게 유지하십시오. 환경을 사용하고 입력 resource_group 이름 또는 입력 resourcegroup 이름을 가진 모든 구성은 환경에서 동일한 값을 사용합니다.
속성을 수동으로 추가하려면 다음 단계를 완료하세요:
-
환경을 생성한 후, 해당 환경의 편집
아이콘을 클릭하세요.
-
추가 > 수동으로 추가...
-
추가하려는 부동산의 범주를 선택하십시오.
대상 계정에 대한 유효한 인증 정보를 사용하여 먼저 인증 속성을 추가하는 것을 고려하십시오.
-
부동산 정보를 입력하고 '추가'를 클릭하세요.
-
저장 을 클릭하십시오.
구성에서 속성 추가하기
구성에서 환경에 여러 속성을 추가하여 시간을 절약하고 오류를 줄이세요. 이렇게 하면 입력된 이름과 값이 선택한 구성에서 직접 가져오기 때문에 해당 속성이 사용자의 환경에서 정확하게 유지되도록 보장하는 데 도움이 됩니다. 구성에서 속성을 추가한 후에는 구성에 영향을 주지 않고 환경에서 해당 속성을 편집할 수 있습니다. 향후 구성에 대한 편집은 환경의 속성에 영향을 미치지 않습니다.
구성에서 여러 속성을 추가하려면 다음 단계를 완료하십시오:
- 환경을 생성한 후, 해당 환경의 편집
아이콘을 클릭하세요.
- 추가 > 구성에서 추가…
- 환경에 속성을 추가하는 데 사용할 구성을 선택하십시오.
- 환경에 추가하려는 구성 항목을 선택한 후 추가를 클릭하십시오.
CLI를 사용하여 환경 만들기
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를 사용하여 환경 만들기
다음 샘플 요청에서 보여주는 것처럼 프로젝트 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"