컨트롤 플레인 구성
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"