Azure 동적 호스트 카탈로그
Azure 동적 호스트 카탈로그
Boundary는 동적 호스트 카탈로그를 사용해 Azure Resource Manager(ARM)를 통해 사용 가능한 Microsoft Azure 리소스를 자동으로 발견하고 호스트로 추가해요.
동적 호스트 카탈로그는 필터를 사용해 만드는 호스트 셋에 어떤 호스트를 추가할지 선택해요. 예를 들어 Microsoft Azure에서 호스트를 동기화하는 호스트 카탈로그를 만들고, tagName eq 'production'으로 태그된 모든 Azure Virtual Machine을 선택하는 production이라는 호스트 셋을 만들 수 있어요.
동적 호스트 카탈로그를 설정하려면:
- 지원되는 인증 방법으로 호스트 카탈로그를 Microsoft Azure 계정에 인증하세요.
- 동기화할 호스트를 선택하는 필터로 호스트 셋을 만드세요.
Azure 플러그인은 Flexible과 Uniform 오케스트레이션 모드 모두에서 Azure Virtual Machine과 Azure Virtual Machine Scale Sets를 지원해요. 스케일 셋에 포함된 개별 가상 머신을 자동으로 발견하고 호스트로 추가해요.
본문
Boundary는 동적 호스트 카탈로그를 사용해 Azure Resource Manager(ARM)를 통해 사용 가능한 Microsoft Azure 리소스를 자동으로 발견하고 호스트로 추가해요.
동적 호스트 카탈로그는 필터를 사용해 만드는 호스트 셋에 어떤 호스트를 추가할지 선택해요. 예를 들어 Microsoft Azure에서 호스트를 동기화하는 호스트 카탈로그를 만들고, tagName eq 'production'으로 태그된 모든 Azure Virtual Machine을 선택하는 production이라는 호스트 셋을 만들 수 있어요.
동적 호스트 카탈로그를 설정하려면:
- 지원되는 인증 방법으로 호스트 카탈로그를 Microsoft Azure 계정에 인증하세요.
- 동기화할 호스트를 선택하는 필터로 호스트 셋을 만드세요.
Azure 플러그인은 Flexible과 Uniform 오케스트레이션 모드 모두에서 Azure Virtual Machine과 Azure Virtual Machine Scale Sets를 지원해요. 스케일 셋에 포함된 개별 가상 머신을 자동으로 발견하고 호스트로 추가해요.
Azure에 연결하기 위한 호스트 카탈로그 생성
Boundary는 다양한 제공자와 통합하기 위해 플러그인을 사용해요. Azure와 통합하기 위해 동적 호스트 카탈로그를 사용하려면 plugin 유형의 호스트 카탈로그를 만들고 plugin-name 값을 azure로 설정해요. 또한 Boundary가 Azure에 인증하는 데 필요한 특정 필드들을 제공해야 해요.
Azure를 위한 동적 호스트 카탈로그를 만들려면 다음 단계를 완료하세요.
- Boundary에 로그인하세요.
- org를 선택한 다음 호스트 카탈로그를 만들 프로젝트를 선택하세요.
- Host Catalogs를 선택하세요.
- New Host Catalog를 선택하세요.
- 다음 필드를 완료하세요.
- Name — (선택) 식별 목적의 선택적 이름이에요. 이름을 입력하면 고유해야 해요.
- Description — (선택) 식별 목적으로 호스트 카탈로그에 대한 선택적 설명이에요.
- Type — (필수) 동적 호스트 카탈로그를 만들려면 Dynamic을 선택하세요.
- Provider — (필수) Azure 리소스를 위한 동적 호스트 카탈로그를 만들려면 Azure를 선택하세요.
- Tenant/Directory ID — (필수) Azure Active Directory 애플리케이션의 ARM 테넌트(디렉터리) ID예요.
- Subscription ID — (필수) 읽기 접근이 있는 구독의 ARM 구독 ID예요.
- Client/Application ID — (필수) Boundary가 호스트를 인증·발견하는 데 사용해야 하는 Azure 서비스 주체의 클라이언트(애플리케이션) ID예요.
- Client Secret Value — (필수) Azure가 인증을 위해 생성하는 ARM 클라이언트 시크릿 값이에요.
- Disable credential rotation — 활성화하면 Boundary가 Azure에서 자격 증명을 자동으로 순환시키지 않아요. Azure 호스트 카탈로그는 현재 자격 증명 순환을 지원하지 않아요.
- Save를 선택하세요.
CLI에서:
-
Boundary에 로그인하세요.
-
다음 명령으로 Azure를 위한 동적 호스트 카탈로그를 만드세요:
$ boundary host-catalogs create plugin \ -scope-id $PROJECT_ID \ -plugin-name azure \ -attr disable_credential_rotation=true \ -attr tenant_id=env://ARM_TENANT_ID \ -attr subscription_id=env://ARM_SUBSCRIPTION_ID \ -attr client_id=env://ARM_CLIENT_ID \ -secret secret_value=env://ARM_CLIENT_SECRET
scope-id와 plugin-name 필드는 동적 호스트 카탈로그를 만들 때 필수예요. attr와 secret 플래그 뒤의 필드는 Azure 특화 필드이며 Boundary가 인증하는 데 필요해요.
disable_credential_rotation—true로 설정하면 Boundary가 자격 증명을 자동으로 순환시키지 않아요. Azure 호스트 카탈로그는 현재 자격 증명 순환을 지원하지 않아요.tenant_id— (필수) Azure Active Directory 애플리케이션의 ARM 테넌트(디렉터리) ID예요.subscription_id— (필수) 읽기 접근이 있는 구독의 ARM 구독 ID예요.client_id— (필수) Boundary가 호스트를 인증·발견하는 데 사용해야 하는 Azure 서비스 주체의 클라이언트(애플리케이션) ID예요.secret_value— (필수) Azure가 인증을 위해 생성하는 ARM 클라이언트 시크릿 값이에요.
호스트 카탈로그를 만들 때 사용할 수 있는 추가 필드는 host-catalogs create 명령 문서를 참고하세요.
다음 예시 속성들의 요구 사항을 배우려면 Boundary Terraform provider 문서를 참고하세요.
다음 Terraform 정책을 적용하세요:
resource "boundary_host_catalog_plugin" "azure_host_catalog" {
name = "Azure Catalog"
description = "Azure Host Catalog"
scope_id = boundary_scope.project.id
plugin_name = "azure"
# recommended to pass in aws secrets using a file() or using environment variables
attributes_json = jsonencode({
"tenant_id" = "ARM_TENANT_ID",
"subscription_id" = "ARM_SUBSCRIPTION_ID"
"client_id" = "ARM_CLIENT_ID"
"disable_credential_rotation" = true })
secrets_json = jsonencode({
"secret_value" = "ARM_CLIENT_SECRET"})
}
scope_id와 plugin_name 필드는 동적 호스트 카탈로그를 만들 때 필수예요.
attributes_json과 secrets_json 플래그 뒤의 필드는 Azure 특화 필드이며 Boundary가 인증하는 데 필요해요.
disable_credential_rotation—true로 설정하면 Boundary가 자격 증명을 자동으로 순환시키지 않아요. Azure 호스트 카탈로그는 현재 자격 증명 순환을 지원하지 않아요.tenant_id— (필수) Azure Active Directory 애플리케이션의 ARM 테넌트(디렉터리) ID예요.subscription_id— (필수) 읽기 접근이 있는 구독의 ARM 구독 ID예요.client_id— (필수) Boundary가 호스트를 인증·발견하는 데 사용해야 하는 Azure 서비스 주체의 클라이언트(애플리케이션) ID예요.secret_value— (필수) Azure가 인증을 위해 생성하는 ARM 클라이언트 시크릿 값이에요.
호스트 카탈로그를 만들 때 사용할 수 있는 추가 필드는 Boundary Terraform provider 문서의 boundary_host_catalog_plugin 항목을 참고하세요.
Azure에 연결하기 위한 호스트 셋 생성
호스트 셋은 추가되어야 할 발견된 호스트를 식별하기 위해 어떤 Azure Resource Manager(ARM) 필터를 사용할지 지정해요.
호스트 셋을 만들려면 다음 단계를 완료하세요.
- Boundary에 로그인하세요.
- org를 선택한 다음 호스트 셋을 만들 프로젝트를 선택하세요.
- Host Catalogs를 선택하세요.
- 호스트 셋을 추가하려는 동적 호스트 카탈로그를 선택하세요.
- Host Sets 탭을 클릭하고 New를 클릭하세요.
- 다음 필드를 완료하세요.
- Name — (선택) 식별 목적의 선택적 이름이에요. 이름을 입력하면 고유해야 해요.
- Description — (선택) 식별 목적으로 호스트 카탈로그에 대한 선택적 설명이에요.
- Filter — (선택)
key eq 'value'형식의 문자열 필터 배열이에요. key는tagName같은 필터 옵션에 해당해요. 전체 예시는tagName eq 'application'이에요.filter필드는 이 호스트 셋의 일부가 되어야 할 리소스를 선택하는 데 사용하는 ARM 필터를 나타내요.
필터링 문법에는 몇 가지 제한이 있어요. 특히 태그를 사용할 때는 다른 유형의 필터(예: 리소스 유형에 대한)는 허용되지 않아요. 즉 다음 예시처럼 태그 이름이나 값에 직접 필터링하는 것이 유용해요: tagName eq 'application', tagName eq 'application' and tagValue eq 'app2'.
- Save를 클릭하세요.
CLI에서:
-
Boundary에 로그인하세요.
-
다음 명령으로 호스트 셋을 만드세요:
$ boundary host-sets create plugin \ -name database \ -host-catalog-id $HOST_CATALOG_ID \ -attr filter="tagName eq 'service-type' and tagValue eq 'database'"
host-catalog-id 값은 이 호스트 셋을 만들 호스트 카탈로그를 지정하는 필수 필드예요. attr 플래그 뒤의 필드는 Azure 특화 필드예요. filter 필드는 이 호스트 셋의 일부가 되어야 할 리소스를 선택하는 데 사용하는 ARM 필터를 나타내요.
필터링 문법에는 몇 가지 제한이 있어요. 특히 태그를 사용할 때는 다른 유형의 필터(예: 리소스 유형에 대한)는 허용되지 않아요. 즉 다음 예시처럼 태그 이름이나 값에 직접 필터링하는 것이 유용해요: tagName eq 'application', tagName eq 'application' and tagValue eq 'app2'.
호스트 셋을 만들 때 사용할 수 있는 추가 필드는 host-sets create 명령 문서를 참고하세요.
다음 예시 속성들의 요구 사항을 배우려면 Boundary Terraform provider 문서를 참고하세요.
다음 Terraform 정책을 적용하세요:
resource "boundary_host_set_plugin" "azure_host_set" {
name = "Azure Set"
description = "Azure Host Set"
host_catalog_id = boundary_scope.azure_host_catalog.id
attributes_json = jsonencode({
"filter" = "tagName eq 'service-type' and tagValue eq 'database'" })
}
host_catalog_id 값은 이 호스트 셋을 만들 호스트 카탈로그를 지정하는 필수 필드예요.
attributes_json 플래그 뒤의 필드는 Azure 특화 필드예요.
filter 필드는 이 호스트 셋의 일부가 되어야 할 리소스를 선택하는 데 사용하는 ARM 필터를 나타내요. 필터링 문법에는 몇 가지 제한이 있어요. 특히 태그를 사용할 때는 다른 유형의 필터(예: 리소스 유형에 대한)는 허용되지 않아요. 즉 다음 예시처럼 태그 이름이나 값에 직접 필터링하는 것이 유용해요.
tagName eq 'application'tagName eq 'application' and tagValue eq 'app2'
호스트 셋을 만들 때 사용할 수 있는 추가 필드는 Boundary Terraform provider 문서의 boundary_host_set_plugin 항목을 참고하세요.
더 알아보기
호스트 카탈로그(host catalogs)와 호스트 셋(host sets)의 도메인 모델 문서를 참고해 이 Boundary 리소스를 더 잘 이해하세요.
Boundary의 필터 문법과 모범 사례에 대한 자세한 내용은 Filtering and listing resources를 참고하세요.