컨트롤 플레인 구성

SAP 배포 자동화 프레임워크의 컨트롤 플레인은 다음 구성 요소로 구성됩니다.

  • 배포자
  • SAP 라이브러리

컨트롤 플레인을 보여 주는 다이어그램

배포자

배포자SAP 배포 자동화 프레임워크의 실행 엔진입니다. Terraform 및 Ansible 명령을 실행하는 데 사용되는 사전 구성된 VM(가상 머신)입니다. Azure DevOps를 사용하는 경우 배포자는 자체 호스팅 에이전트입니다.

배포자 구성은 Terraform tfvars 변수 파일에서 수행됩니다.

배포자에 대해 기존 리소스 그룹을 사용하려면 배포자의 tfvars 파일에서 resource_group_arm_id 매개 변수를 사용하여 리소스 그룹에 대한 Azure 리소스 ID를 제공합니다. 매개 변수가 정의되지 않은 경우 리소스 그룹은 기본 명명을 사용하여 만들어집니다. resource_group_name 매개 변수를 사용하여 기본 이름을 변경할 수 있습니다.

Terraform 매개 변수

이 표에서는 Terraform 매개 변수를 보여 줍니다. 배포 스크립트를 사용하지 않는 경우 이러한 매개 변수를 수동으로 입력해야 합니다.

변수 설명 Type
tfstate_resource_id Terraform 상태 파일을 포함할 SAP 라이브러리의 스토리지 계정에 대한 Azure 리소스 식별자 Required

환경 매개 변수

이 표는 리소스 명명을 정의하는 매개 변수를 보여 줍니다.

변수 설명 Type 주의
environment 컨트롤 플레인의 식별자입니다(최대 5자). 필수 예를 들어, 프로덕션 환경의 경우 PROD, 개발 및 테스팅 환경의 경우 NP입니다.
location 배포할 Azure 지역입니다. Required 소문자를 사용합니다.
codename 리소스 이름을 지정하기 위한 추가 구성 요소입니다. 선택 사항
name_override_file 이름 재정의 파일. 선택 사항 사용자 지정 이름 지정을 참조하세요.
place_delete_lock_on_resources 주요 리소스에 삭제 잠금을 설정합니다. 선택 사항

Resource group

이 표는 리소스 그룹을 정의하는 매개 변수를 보여 줍니다.

변수 설명 Type
resourcegroup_name 만들 리소스 그룹의 이름 선택 사항
resourcegroup_arm_id 기존 리소스 그룹에 대한 Azure 리소스 식별자 선택 사항
resourcegroup_tags 리소스 그룹과 연결할 태그 선택 사항

네트워크 매개 변수

자동화 프레임워크는 가상 네트워크와 서브넷(그린필드)을 만들거나 기존 가상 네트워크와 기존 서브넷(브라운필드) 또는 그린필드와 브라운필드의 조합을 모두 사용할 수 있습니다.

  • 그린필드 시나리오: 가상 네트워크 주소 공간 및 서브넷 주소 접두사를 지정해야 합니다.
  • 갈색 필드 시나리오: 가상 네트워크 및 서브넷에 대한 Azure 리소스 식별자를 지정해야 합니다.

가상 네트워크 주소 공간의 권장 CIDR은 32개의 IP 주소에 대한 공간을 허용하는 /27입니다. /28의 CIDR 값은 16개의 IP 주소만 허용합니다. Azure Firewall을 포함하려면 Azure Firewall에 /26 범위가 필요하므로 CIDR 값 /25를 사용합니다.

관리 서브넷에 권장되는 CIDR 값은 /28이며, 이는 16개의 IP 주소를 허용합니다. 방화벽 서브넷에 권장되는 CIDR 값은 /26이며, 이는 64개의 IP 주소를 허용합니다.

이 표는 네트워킹 매개 변수를 보여 줍니다.

변수 설명 Type 주의
management_network_name 배포자가 배포될 가상 네트워크의 이름 선택 사항 녹색 필드 배포의 경우
management_network_logical_name 네트워크의 논리적 이름(DEV-WEEU-MGMT01-INFRASTRUCTURE) Required
management_network_arm_id 가상 네트워크에 대한 Azure 리소스 식별자 선택 사항 브라운필드 배포의 경우
management_network_address_space 가상 네트워크의 주소 범위 필수 녹색 필드 배포의 경우
management_subnet_name 서브넷의 이름 선택 사항
management_subnet_address_prefix 서브넷에 대한 주소 범위 필수 그린필드 배포의 경우
management_subnet_arm_id 서브넷에 대한 Azure 리소스 식별자 필수 브라운필드 배포의 경우
management_subnet_nsg_name 네트워크 보안 그룹의 이름 선택 사항
management_subnet_nsg_arm_id 네트워크 보안 그룹에 대한 Azure 리소스 식별자 필수 갈색 필드 배포의 경우
management_subnet_nsg_allowed_ips Azure Firewall에 추가할 수 있는 허용된 IP 주소 범위 선택 사항
management_firewall_subnet_arm_id Azure Firewall 서브넷에 대한 Azure 리소스 식별자 필수 브라운필드 배포의 경우
management_firewall_subnet_address_prefix 서브넷에 대한 주소 범위 필수 녹색 필드 배포의 경우
management_bastion_subnet_arm_id Azure Bastion 서브넷에 대한 Azure 리소스 식별자 필수 브라운필드 배포의 경우
management_bastion_subnet_address_prefix 서브넷에 대한 주소 범위 필수 녹색 필드 배포의 경우
webapp_subnet_arm_id 웹앱 서브넷에 대한 Azure 리소스 식별자 필수 브라운필드 배포의 경우
webapp_subnet_address_prefix 서브넷에 대한 주소 범위 필수 녹색 필드 배포의 경우
use_private_endpoint 프라이빗 엔드포인트를 사용합니다. 선택 사항
use_service_endpoint 서브넷에 서비스 엔드포인트 사용 선택 사항

참고 항목

웹앱에 기존 서브넷을 사용하는 경우 서브넷은 배포되는 리소스 그룹과 동일한 지역에 비어 있어야 하며 Microsoft.Web/serverFarms에 위임되어야 합니다.

배포자 가상 머신 매개 변수

이 표에는 배포자 VM과 관련된 매개 변수가 표시됩니다.

변수 설명 Type
deployer_size 사용할 VM SKU를 정의합니다. 기본값: Standard_D4ds_v4 선택 사항
deployer_count 배포자 수를 정의합니다. 선택 사항
deployer_image 사용할 VM 이미지를 정의합니다. 기본값: Ubuntu 22.04 선택 사항
plan VM 이미지와 관련된 계획을 정의합니다. 선택 사항
deployer_disk_type 디스크 유형을 정의합니다. 기본값: Premium_LRS 선택 사항
deployer_use_DHCP Azure 서브넷 제공 IP 주소를 true로 사용해야 하는지(동적)를 제어합니다. 선택 사항
deployer_private_ip_address 사용할 개인 IP 주소를 정의합니다. 선택 사항
deployer_enable_public_ip 배포자에 공용 IP가 있는지 여부를 정의합니다. 선택 사항
auto_configure_deployer 배포자가 필수 소프트웨어(Terraform 및 Ansible)로 구성되었는지 정의합니다. 선택 사항
add_system_assigned_identity 배포자에게 시스템 ID가 할당되었는지 정의합니다. 선택 사항

VM 이미지는 다음 구조를 사용하여 정의됩니다.

xxx_vm_image  = {
  os_type         = ""
  source_image_id = ""
  publisher       = "Canonical"
  offer           = "0001-com-ubuntu-server-jammy"
  sku             = "22_04-lts"
  version         = "latest"
  type            = "marketplace"
}

참고 항목

형식은 marketplace/marketplace_with_plan/custom일 수 있습니다. marketplace_with_plan 형식의 이미지를 사용하려면 문제의 이미지가 구독에서 한 번 이상 사용되어야 합니다. 처음 사용하면 사용자에게 라이선스 사용 조건에 동의하라는 메시지가 표시되며 자동화에서는 이를 승인할 방법이 없습니다.

인증 매개 변수

이 섹션에서는 VM 인증을 정의하는 데 사용되는 매개 변수를 정의합니다.

변수 설명 Type
deployer_vm_authentication_type 배포자에 대한 기본 인증을 정의합니다. 선택 사항
deployer_authentication_username 관리자 계정 이름 선택 사항
deployer_authentication_password 관리자 암호 선택 사항
deployer_authentication_path_to_public_key 인증에 사용되는 퍼블릭 키의 경로 선택 사항
deployer_authentication_path_to_private_key 인증에 사용되는 프라이빗 키의 경로 선택 사항
use_spn 정의된 경우 서비스 주체를 사용하여 배포를 수행합니다. 그렇지 않으면 MSI 선택 사항

자격 증명 모음 매개 변수

이 섹션에서는 Azure Key Vault 정보를 정의하는 데 사용되는 매개 변수를 정의합니다.

변수 설명 Type
user_keyvault_id 사용자 키 자격 증명 모음에 대한 Azure 리소스 식별자. 선택 사항
spn_keyvault_id 배포 자격 증명이 포함된 키 자격 증명 모음에 대한 Azure 리소스 식별자입니다. 선택 사항
deployer_private_key_secret_name 배포자 프라이빗 키의 키 자격 증명 모음 비밀 이름입니다. 선택 사항
deployer_public_key_secret_name 배포자 공개 키의 키 자격 증명 모음 비밀 이름입니다. 선택 사항
deployer_username_secret_name 배포자 사용자 이름의 키 자격 증명 모음 비밀 이름입니다. 선택 사항
deployer_password_secret_name 배포자 비밀에 대한 키 자격 증명 모음 비밀 이름입니다. 선택 사항
additional_users_to_add_to_keyvault_policies 배포 KeyVault 액세스 정책에 추가할 사용자 개체 ID의 목록 선택 사항
set_secret_expiry 키 자격 증명 모음 비밀의 만료 기간을 12개월로 설정합니다. 선택 사항
soft_delete_retention_days 일시 삭제 기간에 항목을 보존해야 하는 일 수입니다. 선택 사항
deployer_assign_subscription_permissions 구독 권한 할당을 제어합니다. 선택 사항

DNS 지원

변수 설명 Type
dns_label 프라이빗 DNS 영역의 DNS 이름 선택 사항
use_custom_dns_a_registration DNS에 외부 시스템을 사용하고 Azure Native에 대해 false로 설정합니다. 선택 사항
management_dns_subscription_id 프라이빗 DNS 영역이 포함된 구독의 구독 ID입니다. 선택 사항
management_dns_resourcegroup_name 프라이빗 DNS 영역이 포함된 리소스 그룹입니다. 선택 사항

다른 매개 변수

변수 설명 Type 주의
firewall_deployment Azure Firewall을 배포할지 여부를 제어하는 부울 플래그입니다. 선택 사항
bastion_deployment Azure Bastion 호스트를 배포할지 여부를 제어하는 부울 플래그입니다. 선택 사항
bastion_sku 배포할 Azure Bastion 호스트용 SKU(기본/표준). 선택 사항
enable_purge_control_for_keyvaults 키 자격 증명 모음에서 제거 제어를 사용하도록 설정할지 여부를 제어하는 부울 플래그입니다. 선택 사항 테스트 배포에만 사용합니다.
enable_firewall_for_keyvaults_and_storage 선택한 서브넷에 대한 액세스 제한 선택 사항
Agent_IP 에이전트의 IP 주소입니다. 선택 사항
add_Agent_IP 에이전트 IP가 키 자격 증명 모음 및 스토리지 계정 방화벽에 추가되는지 제어합니다. 선택 사항

웹앱 매개 변수

변수 설명 Type 주의
use_webapp 웹앱을 배포해야 하는지 여부를 나타내는 부울 값입니다. 선택 사항
app_service_SKU_name App Service 요금제의 SKU입니다. 선택 사항
app_registration_app_id 웹앱에 사용할 앱 등록 ID입니다. 선택 사항
webapp_client_secret App Service 요금제의 SKU입니다. 선택 사항 Key Vault에 유지됩니다.

배포자에 대한 예제 매개 변수 파일(필수 매개 변수만 해당)

# The environment value is a mandatory field, it is used for partitioning the environments, for example (PROD and NP)
environment="MGMT"

# The location/region value is a mandatory field, it is used to control where the resources are deployed
location="westeurope"

# management_network_address_space is the address space for management virtual network
management_network_address_space="10.10.20.0/25"

# management_subnet_address_prefix is the address prefix for the management subnet
management_subnet_address_prefix="10.10.20.64/28"

# management_firewall_subnet_address_prefix is the address prefix for the firewall subnet
management_firewall_subnet_address_prefix="10.10.20.0/26"

# management_bastion_subnet_address_prefix is a mandatory parameter if bastion is deployed and if the subnets are not defined in the workload or if existing subnets are not used
management_bastion_subnet_address_prefix = "10.10.20.128/26"

deployer_enable_public_ip=false

firewall_deployment=true

bastion_deployment=true

SAP 라이브러리

SAP 라이브러리는 Terraform 상태 파일의 영구 스토리지와 컨트롤 플레인에 대해 다운로드한 SAP 설치 미디어를 제공합니다.

SAP 라이브러리 구성은 Terraform tfvars 변수 파일에서 수행됩니다.

SAP 라이브러리에 기존 리소스 그룹을 사용하려면 배포자의 tfvars 파일에서 resource_group_arm_id 매개 변수를 사용하여 리소스 그룹에 대한 Azure 리소스 ID를 제공합니다. 매개 변수가 정의되지 않은 경우 리소스 그룹은 기본 명명을 사용하여 만들어집니다. resource_group_name 매개 변수를 사용하여 기본 이름을 변경할 수 있습니다.

Terraform 매개 변수

이 표에서는 Terraform 매개 변수를 보여 줍니다. 배포 스크립트나 Azure Pipelines를 사용하지 않는 경우 이러한 매개 변수를 수동으로 입력해야 합니다.

변수 설명 Type 주의
deployer_tfstate_key 배포자의 상태 파일 이름 Required

환경 매개 변수

이 표는 리소스 명명을 정의하는 매개 변수를 보여 줍니다.

변수 설명 Type 주의
environment 컨트롤 플레인 식별자(최대 5자) 필수 예를 들어, 프로덕션 환경의 경우 PROD, 개발 및 테스팅 환경의 경우 NP입니다.
location 배포할 Azure 지역 Required 소문자를 사용합니다.
name_override_file 이름 재정의 파일 선택 사항 사용자 지정 이름 지정을 참조하세요.

Resource group

이 표는 리소스 그룹을 정의하는 매개 변수를 보여 줍니다.

변수 설명 Type
resourcegroup_name 만들 리소스 그룹의 이름 선택 사항
resourcegroup_arm_id 기존 리소스 그룹에 대한 Azure 리소스 식별자 선택 사항
resourcegroup_tags 리소스 그룹과 연결할 태그 선택 사항

SAP 설치 미디어 스토리지 계정

변수 설명 Type
library_sapmedia_arm_id Azure 리소스 식별자 선택 사항

Terraform 원격 상태 스토리지 계정

변수 설명 Type
library_terraform_state_arm_id Azure 리소스 식별자 선택 사항

DNS 지원

변수 설명 Type
dns_label 프라이빗 DNS 영역의 DNS 이름 선택 사항
use_custom_dns_a_registration 기존 프라이빗 DNS 영역 사용 선택 사항
management_dns_subscription_id 프라이빗 DNS 영역이 포함된 구독의 구독 ID입니다. 선택 사항
management_dns_resourcegroup_name 프라이빗 DNS 영역이 포함된 리소스 그룹입니다. 선택 사항

extras 매개 변수

변수 설명 Type
use_private_endpoint 프라이빗 엔드포인트를 사용합니다. 선택 사항
use_service_endpoint 서브넷에 서비스 엔드포인트 사용 선택 사항
enable_firewall_for_keyvaults_and_storage 선택한 서브넷에 대한 액세스 제한 선택 사항
subnets_to_add_to_firewall_for_keyvaults_and_storage 키 자격 증명 모음 및 스토리지 계정에 액세스해야 하는 서브넷입니다. 선택 사항

SAP 라이브러리에 대한 예 매개 변수 파일(필수 매개 변수만)

# The environment value is a mandatory field, it is used for partitioning the environments, for example (PROD and NP)
environment = "MGMT"

# The location/region value is a mandatory field, it is used to control where the resources are deployed
location = "westeurope"

다음 단계