프로젝트에서 배포 가능한 아키텍처 쌓기

프로젝트에서 배포 가능한 아키텍처를 함께 스택하여 보다 복잡한 엔드투엔드 솔루션 아키텍처를 만들 수 있습니다. 배포 가능한 아키텍처를 서로 연결하기 위해 Terraform을 코딩할 필요가 없습니다. 배포 가능한 아키텍처에서 입력 값을 구성할 때 다른 아키텍처의 입력 또는 출력을 참조하여 서로 연결할 수 있습니다. 스택 아키텍처를 배포한 후에는 배포 가능한 아키텍처로 비공개 카탈로그에 추가하여 조직의 다른 사용자와 엔드투엔드 솔루션을 쉽게 공유할 수 있습니다.

이는 평가 및 테스트 용도로 사용할 수 있는 실험적 기능이며 별도의 통지 없이 변경될 수 있습니다.

프로젝트에서 카탈로그에서 이미 사용 가능한 배포 가능한 아키텍처를 스택으로 쌓을 수 있습니다. 카탈로그에 아직 온보딩되지 않은 배포 가능한 아키텍처를 만드는 경우, 다른 아키텍처와 스택을 쌓아 온보딩하면서 배포 가능한 아키텍처를 확장할 수 있습니다. 이 접근 방식은 프로젝트에서 배포 가능한 아키텍처를 스택으로 쌓을 때 사용할 수 없는 더 많은 사용자 지정 옵션을 제공합니다(예: 다양한 사용 사례에 대한 선택적 아키텍처 포함). 이 접근 방식은 배포 가능한 아키텍처를 비공개 카탈로그에서 아직 사용할 수 없는 경우에도 작동합니다. 아키텍처를 함께 쌓는 접근 방식에 관계없이 사용자가 프로젝트를 사용하여 구성하고 배포할 수 있는 보다 강력한 배포 가능한 아키텍처가 탄생합니다.

시작하기 전에

다음 액세스 권한이 있는지 확인하세요. 액세스 및 권한에 대한 자세한 정보는 프로젝트에 대한 액세스 지정 을 참조하십시오.

  • IBM Cloud 프로젝트 서비스의 편집자 역할입니다.
  • IBM Cloud® Schematics 서비스의 편집자 및 관리자 역할입니다.
  • 프로젝트의 자원 그룹에 대한 뷰어 역할입니다.

함께 스택하려는 배치 가능한 아키텍처를 프로젝트에 추가하십시오. 자세한 정보는 프로젝트에 배치 가능한 아키텍처 추가 를 참조하십시오.

프로젝트에 배치 가능한 아키텍처를 추가할 때 식별하는 데 도움이 되는 의미 있는 이름을 제공하십시오. 예를 들어 애플리케이션의 기반을 만드는 배포 가능한 인프라 아키텍처를 추가하는 경우 해당 인프라를 먼저 배포해야 합니다. 그렇지 않으면 애플리케이션을 해당 인프라에 배치할 수 없습니다. 프로젝트에 추가할 때 인프라 배치 가능 아키텍처의 이름을 1 - infrastructure 로 지정하십시오. 애플리케이션의 이름을 2 - application 로 지정하여 두 번째 배치해야 함을 표시하십시오.

CLI를 사용하여 아키텍처를 함께 스태킹

배치 가능한 아키텍처를 프로젝트에 추가한 후 다음 ibmcloud project config-create 명령을 실행하여 함께 누적하십시오. Definition 옵션에서 함께 스택하려는 기존 배포 가능한 아키텍처의 이름과 구성 ID를 제공하여 members 을 지정합니다:

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

예를 들어, 다음 명령은 프로젝트에서 StackDev 이라는 이름의 배포 가능한 아키텍처를 만듭니다. 여기에는 이미 프로젝트에 구성으로 추가된 두 개의 배포 가능한 아키텍처( custom-apachetest-slz )가 포함되어 있습니다:

ibmcloud project config-create \
  --project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
  --definition '{"name": "StackDev", "members": [{"name": "custom-apache", "config_id": "caff3a49-0bf4-40c4-b348-47e5da6e2274"}, {"name": "test-slz", "config_id": "fc7fa3d1-33db-4c40-9570-7604348ab3c4"}]}' \
  --output json

명령 매개변수에 대한 자세한 정보는 ibmcloud project config-create 의 내용을 참조하십시오.

CLI를 사용하여 스택 정의 만들기

배포 가능한 아키텍처를 비공개 카탈로그에 온보딩하려면 스택 정의를 만들어야 합니다. 배포 가능한 각 아키텍처가 서로 어떻게 연관되는지 정의합니다. 사용자가 비공개 카탈로그에서 프로젝트에 추가할 때 전체 솔루션을 성공적으로 배포할 수 있도록 이 정보를 제공하세요.

스택 정의에는 멤버 배포 가능한 아키텍처에서 참조할 수 있는 입력과 출력이 포함되어 있습니다. 배포 가능한 아키텍처 간에 참조를 포함시켜 사용자를 위해 서로 연결할 수도 있습니다. 성공적으로 배포하기 위해 특정 값이나 참조가 필요한 입력은 스택 정의에 포함되어야 합니다.

두 아키텍처를 함께 쌓아서 만든 배포 가능한 아키텍처의 다이어그램입니다. 스택 정의에는 접두사, ssh_key, ssh_private_key의 세 가지 입력 값이 정의되어 있습니다. Test-slz 아키텍처는 접두사와 ssh_key를 두 개의 입력 값으로 참조합니다. 사용자 정의 아파치 아키텍처는 스택 정의의 ssh_private_key와 함께 test-slz의 출력을 입력 중 하나로 참조하는 반면, 사용자 정의 아파치 아키텍처는 스택 정의의 출력을 입력 중 하나로 참조합니다.
배포 가능한 아키텍처 간 참조

현재 멤버는 스택 정의에서 출력을 참조할 수 없습니다.

다음 ibmcloud project stack-definition-create 명령을 실행하여 스택 정의를 작성하고 입력을 제공하십시오.

ibmcloud project stack-definition-create --project-id PROJECT-ID --id

여기서 id 은 프로젝트에서 방금 생성한 StackDev 배포 가능한 아키텍처의 구성 ID입니다.

예를 들어 다음 명령은 스택 정의에 다음 세 가지 입력을 추가합니다. 이러한 입력값은 사용자에게 숨겨지지 않는 필수 문자열이므로 엔드투엔드 배포 가능한 아키텍처를 배포하려면 사용자가 이러한 입력값을 구성해야 합니다:

  • 기본값이 stackDemoprefix 입력입니다.
  • 기본값이 없는 ssh_key 입력.
  • 사용자가 입력을 구성할 때 사용자를 지원하기 위해 제공되는 기본값을 사용하는 ssh_private_key.

이 명령에는 함께 스택된 두 개의 배포 가능한 아키텍처에 대한 입력 이름도 포함됩니다. 이러한 입력값은 참조 값으로 채워지고 비공개 카탈로그에서 프로젝트에 솔루션을 추가하는 사용자를 위해 저장됩니다:

  • test-slz 배치 가능 아키텍처에는 prefix 입력 및 ssh_key 입력이 포함되어 있습니다.
  • custom-apache 배치 가능 아키텍처에는 ssh_private_key 입력 및 prerequisite_workspace_id 입력이 포함되어 있습니다.

참조 작성에 대한 자세한 정보는 값 참조 를 참조하십시오.

ibmcloud project stack-definition-create \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--stack-definition '{"inputs": [{"name": "prefix", "type": "string", "hidden": false, "required": true, "default": "stackDemo"}, {"name": "ssh_key", "type": "string", "hidden": false, "required": true}, {"name": "ssh_private_key", "type": "string", "hidden": false, "required": true, "default": "<<-EOF\nINSERT YOUR KEY HERE\nEOF"}], "members": [{"name": "test-slz", "inputs": [{"name": "prefix"}, {"name": "ssh_key"}]}, {"name": "custom-apache", "inputs": [{"name": "ssh_private_key"}, {"name": "prerequisite_workspace_id"}]} ]}' --output json

명령 매개변수에 대한 자세한 정보는 ibmcloud project stack-definition-create 의 내용을 참조하십시오.

CLI를 사용하여 멤버 배포 가능한 아키텍처 내에서 스택 정의의 입력 참조하기

이제 입력이 스택 정의에 추가되었으므로 함께 스택한 각 아키텍처에 대해 ibmcloud project config-update 명령을 실행하여 해당 입력을 참조하도록 멤버 배포 가능한 아키텍처를 업데이트합니다:

ibmcloud project config-update --project-id PROJECT-ID --id

예를 들어 다음 명령은 test-slz 배포 가능한 아키텍처를 업데이트하여 스택 정의에 추가된 입력을 참조합니다:

ibmcloud project config-update \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4 \
--definition '{"inputs": {"prefix": "ref:../../inputs/prefix", "ssh_key": "ref:../../inputs/ssh_key"}}' --output json

custom-apache 아키텍처는 스택 정의의 ssh_private_key 값을 사용하므로 해당 값을 참조하도록 custom-apache 배치 가능 아키텍처를 업데이트하십시오. custom-apache 아키텍처는 또한 schematics_workspace_id 입력 값을 입력 중 하나로 사용하므로 해당 값에 대한 참조를 포함하십시오.

ibmcloud project config-update \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id caff3a49-0bf4-40c4-b348-47e5da6e2274 \
--definition '{"inputs": {"ssh_private_key": "ref:../../inputs/ssh_private_key", "prerequisite_workspace_id": "ref:../test-slz/outputs/schematics_workspace_id"}}' --output json

명령 매개변수에 대한 자세한 정보는 ibmcloud project config-update 의 내용을 참조하십시오.

CLI를 사용하여 스택 정의의 입력 값 업데이트하기

이제 원하는 값을 참조하도록 멤버 배포 가능한 아키텍처가 구성되었으므로 StackDev 배포 가능한 아키텍처에 대해 ibmcloud project config-update 을 실행하여 스택 정의의 입력 값을 업데이트합니다. 예를 들어 다음 명령은 test-slz 배포 가능한 아키텍처에서 참조하는 prefix 입력 값을 업데이트합니다. ssh_keyssh_private_key 입력에 대한 값도 제공됩니다.

ibmcloud project config-update  \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--definition '{"inputs": {"prefix": "kb-stack-0327", "ssh_key": "<publicKey>", "ssh_private_key": "<privateKey>"}}' --output json

명령 매개변수에 대한 자세한 정보는 ibmcloud project config-update 의 내용을 참조하십시오.

이제 입력값이 구성되었으므로 각 멤버 배포 가능한 아키텍처의 유효성을 검사하고 배포합니다.

예를 들어, 다음 명령은 test-slz 배치 가능 아키텍처의 유효성을 검증합니다.

ibmcloud project config-validate \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4

다음 명령은 배치를 위해 test-slz 배치 가능 아키텍처를 승인합니다.

ibmcloud project config-approve \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4 \
--comment 'I approve'

그리고 다음 명령은 test-slz 배치 가능 아키텍처를 배치합니다.

ibmcloud project config-deploy \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4

CLI를 사용하여 비공개 카탈로그에 온보딩하기

각 멤버 배포 가능한 아키텍처의 유효성을 검사하고 배포한 후에는 다른 사람들이 액세스할 수 있도록 비공개 카탈로그에 배포 가능한 아키텍처를 온보딩할 수 있습니다. 사용자가 비공개 카탈로그에서 배포 가능한 아키텍처를 프로젝트에 추가하면 함께 스택한 각 아키텍처가 프로젝트에 포함됩니다. 다음 ibmcloud project stack-definition-export 명령을 실행하십시오.

ibmcloud project stack-definition-export --project-id PROJECT ID

새 제품을 작성하거나 기존 제품에 버전을 추가할 수 있습니다. 예를 들어, 다음 명령은 My Apache Stack 라는 개인용 카탈로그에 새 제품을 작성합니다.

ibmcloud project stack-definition-export --project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 --id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 --settings '{"catalog_id": "702ff97a-e35a-45a4-a0c0-a04e2e052bc8", "label": "My Apache Stack"}' --output json

다음 명령은 기존 제품의 새 버전을 작성합니다.

ibmcloud project stack-definition-export \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--settings '{"catalog_id": "702ff97a-e35a-45a4-a0c0-a04e2e052bc8", "product_id": "1bf57631-27a2-42cc-ac87-733cca67e8a5", "target_version": "1.0.1"}' --output json

명령 매개변수에 대한 자세한 정보는 ibmcloud project stack-definition-export 의 내용을 참조하십시오.

이제 아키텍처는 비공개 카탈로그의 초안으로 아직 게시되지는 않았지만 비공개 카탈로그에 대한 편집기 액세스 권한이 있는 모든 사람이 사용할 수 있습니다.

비공개 카탈로그에 대한 온보딩을 완료하려면 카탈로그 세부 정보를 편집하고 아키텍처 다이어그램 및 카테고리와 같은 정보를 제공합니다.

콘솔을 사용하여 아키텍처를 함께 스태킹

배포 가능한 아키텍처를 프로젝트에 추가한 후 이를 구성합니다. 함께 스택하는 아키텍처가 서로 의존하는 경우, 구성할 때 입력 또는 출력을 참조하여 아키텍처를 서로 연결하세요. 그런 다음 다음 단계를 완료하여 아키텍처를 함께 쌓습니다:

  1. 함께 스택할 배포 가능한 아키텍처의 확인란을 선택합니다.

  2. 스택을 선택하십시오.

  3. 배포 가능한 아키텍처의 이름을 입력하거나 기존 아키텍처를 선택합니다.

    배포 가능한 아키텍처는 함께 작동하여 솔루션을 제공해야 합니다. 함께 쌓아 올리는 각 아키텍처를 정확하게 나타내는 의미 있는 엔드투엔드 솔루션의 이름을 생각해 보세요. 예를 들어, Apache 애플리케이션을 인프라 기반과 함께 스택하는 경우 Apache application with infrastructure base 같은 이름을 지정하여 아키텍처가 배포하는 내용을 명확하게 식별할 수 있습니다.

  4. 계속을 클릭합니다.

콘솔을 사용하여 변수 정의하기

배포 가능한 아키텍처를 함께 쌓은 후에는 사용자를 위한 변수를 정의해야 합니다. 배포 가능한 아키텍처를 서로 연결하여 사용자가 아키텍처를 개별적으로 구성하는 대신 단일 인터페이스에서 입력을 구성할 수 있도록 하는 것이 목표입니다.

정의하는 입력 변수는 배포 가능한 아키텍처가 카탈로그에서 프로젝트에 추가된 후 사용자가 구성합니다. 마찬가지로 선택한 출력 변수는 아키텍처의 상위 수준에서 사용자에게 표시됩니다. 사용자가 구성하지 않아야 하는 변수를 선택하지 마십시오. 예를 들어 아키텍처에 스토리지 계획과 같은 입력 변수에 특정 값이 필요한 경우 스토리지 계획 입력을 선택하지 마세요. 배포 가능한 아키텍처를 서로 연결하는 참조를 선택하지 마세요. 그렇게 하면 해당 아키텍처 간의 연결이 끊어지고 전체 솔루션이 성공적으로 배포되지 않을 수 있습니다.

사용자가 더 쉽게 구성할 수 있도록 필요한 입력 값의 수를 최소화하세요. 각 아키텍처에 필요한 입력을 검토하고 스택 정의에 입력 값에 대한 참조를 추가하거나 다른 아키텍처의 출력 값을 참조하여 해당 입력이 구성되었는지 확인하세요.

다음 단계를 완료하십시오.

  1. 프로젝트의 구성 탭에서 스택 배포 가능한 아키텍처의 옵션 아이콘 옵션 아이콘 을 클릭하고 변수 정의 을 선택합니다.

  2. 보안 탭에서 사용자가 구성해야 하는 변수를 선택하십시오.

  3. 필수 입력 탭으로 이동하여 사용자가 구성해야 하는 필수 입력을 선택하십시오.

  4. 선택적 입력 탭으로 이동하여 사용자가 구성해야 하는 선택적 입력을 선택하십시오.

  5. 출력 탭으로 이동하여 상위 수준에서 표시할 출력 변수를 선택합니다.

    사용자가 아키텍처 배포 후 애플리케이션 URL이나 자격 증명 이름과 같은 중요한 출력 값을 더 쉽게 찾을 수 있도록 하세요. 멤버 배포 가능한 아키텍처에서 중요한 출력 값을 선택하여 상위 레벨의 사용자에게 표시합니다.

  6. 다음을 클릭하고 나머지 아키텍처에 대한 변수를 계속 선택합니다.

  7. 완료했으면 마침을 클릭하고 배포를 위한 아키텍처를 구성합니다. 변수를 정의할 때 선택한 모든 입력을 구성해야 할 수 있습니다.

콘솔을 사용하여 비공개 카탈로그에 온보딩하기

함께 쌓은 각 배포 가능한 아키텍처를 검증하고 배포한 후에는 비공개 카탈로그에 배포 가능한 아키텍처로 추가하여 조직의 다른 사람들과 솔루션을 쉽게 공유할 수 있습니다. 자세한 내용은 비공개 카탈로그 공유를 참조하세요.

다음 단계를 완료하십시오.

  1. 프로젝트의 구성 탭에서 배포 가능한 아키텍처의 옵션 아이콘 옵션 아이콘 을 클릭하고 비공개 카탈로그에 추가 을 선택합니다.
  2. 배포 가능한 아키텍처를 추가할 비공개 카탈로그를 선택하거나 만듭니다.
  3. 새 제품인지, 기존 제품의 새 버전인지 선택합니다.
  4. 해당되는 경우 제품 이름, 카테고리, 변형 및 버전과 같은 세부사항을 제공하십시오.
  5. 다음 을 클릭하십시오.
  6. 사용자가 비공개 카탈로그에서 프로젝트에 배포 가능한 아키텍처를 추가한 후 구성할 수 있는 변수를 검토하세요. 변경이 필요한 경우 변수를 정의할 수 있습니다.
  7. 추가 를 클릭하십시오.

배포 가능한 아키텍처는 이제 비공개 카탈로그의 초안으로 아직 게시되지는 않았지만 비공개 카탈로그에 대한 편집기 액세스 권한이 있는 모든 사람이 사용할 수 있습니다. 사용자가 비공개 카탈로그에서 배포 가능한 아키텍처를 프로젝트에 추가하면 함께 스택한 각 아키텍처가 프로젝트에 포함됩니다.

배포 가능한 아키텍처를 비공개 카탈로그에 온보딩하려면 카탈로그 세부 정보를 편집하고 아키텍처 다이어그램 및 카테고리와 같은 정보를 제공하세요.

다른 배포 가능한 아키텍처와 함께 스택한 새 버전을 사용할 수 있나요? 프로젝트에서 최신 버전을 사용하도록 구성을 업데이트하고, 변경 사항을 검증 및 배포한 다음 업데이트된 솔루션을 비공개 카탈로그에 온보딩하는 단계를 완료하세요. 이미 온보딩한 기존 제품을 선택하고 새 버전 번호를 입력합니다. 이렇게 하면 업데이트된 배포 가능한 아키텍처가 함께 스택한 다른 아키텍처와 계속 제대로 작동하도록 할 수 있습니다.