수동 배포 시작
자동 배포와 함께 Azure 배포 자동화 프레임워크에서 SAP를 수동으로 배포할 수도 있습니다. 이 예제 구성 및 샘플 매개 변수 파일을 사용하여 시작합니다.
팁
이 가이드에서는 수동 배포를 수행하는 방법만 설명합니다. 빠르게 시작하려면 자동화 배포 가이드를 대신 참조하세요.
이 단계에서는 자동화 프레임워크에 대한 기본 명명 규칙을 참조하고 사용합니다. 예제 값은 코드 전체에서 명명에도 사용됩니다. 예를 들어 배포자 이름은 DEMO-EUS2-DEP00-INFRASTRUCTURE
입니다. 이 예제에서 환경은 데모(DEMO
)이고 지역은 미국 동부 2(EUS2
)이며 배포자 가상 네트워크는 DEP00
입니다.
필수 구성 요소
- Azure 구독 Azure 구독이 없는 경우 무료 계정을 만들 수 있습니다.
- 서비스 주체를 만들 권한이 있는 Azure 계정입니다.
- Azure 환경에서 SAP 소프트웨어를 다운로드합니다.
배포자 설정
시작하기 전에 올바른 Azure 구독에 있는지 확인합니다. 그런 다음, 배포자를 설정합니다.
- Terraform을 다운로드하고 설치합니다.
- 배포자에서 자동화 프레임워크 리포지토리를 복제 및 구성합니다.
- Terraform 초기화
- 배포의 나머지 부분에 사용할 SSH 키를 가져옵니다.
Azure 구독 확인
적절한 Azure 구독을 사용하고 있는지 확인합니다.
Azure Portal에 로그인합니다.
사용하려는 구독에 있는지 확인합니다.
az account list --output=table | grep -i true
필요한 경우 사용하려는 구독으로 활성 구독을 변경합니다.
Terraform 다운로드
Terraform을 사용자 환경에 다운로드합니다.
새 디렉터리
bin
를 만들고 이동합니다.mkdir -p ~/bin; cd $_
적절한 Terraform 이진 파일을 검색합니다. 예시:
wget https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
Terraform 이진 파일의 압축을 풉니다. 예시:
unzip terraform_0.14.7_linux_amd64.zip
Terraform 다운로드를 확인합니다.
hash terraform
SAP 자동화 배포를 위한 디렉터리를 만듭니다.
mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
리포지토리 설정
자동화 프레임워크 리포지토리를 복제하고 구성합니다.
GitHub에서 리포지토리를 복제합니다.
git clone https://github.com/Azure/sap-automation.git
sap-automation
폴더로 이동합니다.cd ~/Azure_SAP_Automated_Deployment/sap-automation
필요에 따라 주 분기와 다른 분기를 확인합니다. 리포지토리의 기본 분기는 기본값입니다.
<branch>
를 사용할 분기 이름 또는 커밋 해시로 바꿉니다.git checkout <branch>
분기가 예상 수정 내용에 있는지 확인합니다.
git rev-parse HEAD
Terraform 초기화
작업 디렉터리를 만듭니다. 디렉터리 이름은 기본 명명 규칙을 준수해야 합니다. 예시:
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
JSON 매개 변수 파일을 만듭니다.
cat <<EOF > DEMO-EUS2-DEP00-INFRASTRUCTURE.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2", "vnets": { "management": { "name" : "DEP00", "address_space" : "10.0.0.0/25", "subnet_mgmt": { "prefix" : "10.0.0.64/28" }, "subnet_fw": { "prefix" : "10.0.0.0/26" } } } }, "options": { "enable_deployer_public_ip" : true }, "firewall_deployment" : true } EOF
Terraform을 초기화합니다.
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
기본 명명 규칙을 따르는 Terraform 실행 계획을 만듭니다.
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
Terraform 실행 계획을 적용하여 리소스를 배포합니다.
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
출력을 기록해 둡니다.
SSH 키 가져오기
Terraform 배포의 출력을 사용하여 다음 필드의 값을 기록해 둡니다.
공용 IP 주소:
deployer_public_ip_address
키 자격 증명 모음의 사용자 이름:
deployer_kv_user_name
프라이빗 키 자격 증명 모음의 이름:
deployer_kv_prvt_name
공개 키의 이름:
deployer_public_key_secret_name
프라이빗 키의 이름:
deployer_private_key_secret_name
후처리 스크립트를 실행합니다.
./post_deployment.sh
프라이빗 SSH 키를 추출합니다.
az keyvault secret show \ --vault-name DEMOEUS2DEP00userE27 \ --name DEMO-EUS2-DEP00-sshkey | \ jq -r .value > sshkey
공개 SSH 키를 추출합니다.
az keyvault secret show \ --vault-name DEMOEUS2DEP00userF6A \ --name DEMO-EUS2-DEP00-sshkey-pub | \ jq -r .value > sshkey.pub
프라이빗 및 공개 키 쌍을 다운로드합니다. Cloud Shell 메뉴에서 파일 업로드/다운로드>다운로드를 선택합니다.
서비스 주체 구성
배포자는 서비스 주체를 사용하여 구독에 리소스를 배포합니다.
Azure CLI에 로그인합니다.
az login
서비스 주체를 생성합니다.
<subscription-id>
를 Azure 구독 식별자로 바꿔야 합니다. 또한<sp-name>
를 서비스 주체의 이름으로 바꿉니다.az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
서비스 주체에 대한 정보가 포함된 출력을 확인합니다. 다음 필드의 값을 복사합니다.
애플리케이션 식별자:
appId
암호:
password
테넌트 식별자:
tenant
클러스터 서비스 주체에 대한 역할 할당을 만듭니다.
<appId>
를 이전 단계에서 기록한 애플리케이션 식별자로 바꿔야 합니다.az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
다음과 같이 키 자격 증명 모음에 서비스 주체에 대한 키를 추가합니다. 자리 표시자 값을 이전 단계에서 기록한 정보로 바꿔야 합니다.
<environment>
를DEMO
와 같은 환경 이름으로 바꿉니다.az keyvault secret set --name "<environment>-subscription-id" --vault-name "<deployer_kv_user_name>" --value "<subscription-id>"; az keyvault secret set --name "<environment>-tenant-id" --vault-name "<deployer_kv_user_name>" --value "<tenant>"; az keyvault secret set --name "<environment>-client-id" --vault-name "<deployer_kv_user_name>" --value "<appId>"; az keyvault secret set --name "<environment>-client-secret" --vault-name "<deployer_kv_user_name>" --value "<password>";
라이브러리 구성
SSH 클라이언트와 배포자 설정 중에 검색한 SSH 키를 사용하여 배포자에 로그인합니다. PuTTY를 SSH 클라이언트로 사용하는 경우 사용하기 전에 SSH 키를
.ppk
형식으로 변환합니다.자동화 프레임워크 리포지토리를 복제한 위치로 이동합니다.
cd ~/Azure_SAP_Automated_Deployment/sap-automation
필요에 따라 주 분기와 다른 분기를 확인합니다. 리포지토리의 기본 분기는 기본값입니다.
<branch>
를 사용할 분기 이름 또는 커밋 해시로 바꿉니다.git checkout <branch>
분기가 예상 수정 내용에 있는지 확인합니다.
git rev-parse HEAD
작업 디렉터리를 만듭니다.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
JSON 구성 파일을 만듭니다.
cat <<EOF > DEMO-EUS2-SAP_LIBRARY.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2" }, "deployer": { "environment" : "DEMO", "region" : "eastus2", "vnet" : "DEP00" } } EOF
Terraform을 초기화합니다.
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
기본 명명 규칙을 따르는 Terraform 실행 계획을 만듭니다.
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library
Terraform 실행 계획을 적용하여 리소스를 배포합니다.
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
배포 다시 초기화
배포자 다시 초기화
SSH 클라이언트에서 배포자에 로그인된 상태를 유지합니다. 또는 다시 로그인합니다.
만든 작업 디렉터리로 이동합니다.
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
backend
라는 다른 매개 변수 파일을 만듭니다. 다시 기본 명명 규칙을 따릅니다.resource_group_name
의 경우 Terraform 상태 파일(.tfstate
)이 포함된 스토리지 계정이 있는 리소스 그룹의 이름을 사용합니다.storage_account_name
의 경우<tfstate_storage_account_name>
를.tfstate
파일에 대한 SAP 라이브러리 배포의 스토리지 계정 이름으로 바꿉니다.key
의 경우 배포자의 리소스 그룹 이름을 확장.terraform.tfstate
와 결합합니다. 예시:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-DEP00-INFRASTRUCTURE.terraform.tfstate" EOF
Terraform을 다시 초기화합니다.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
기존 상태를 새 백 엔드에 복사하시겠습니까?라는 메시지가 표시되면
yes
를 입력합니다.로컬 상태 파일을 제거합니다.
rm terraform.tfstate*
Terraform 실행 계획을 만듭니다. 다시 기본 명명 규칙을 따릅니다. 예시:
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
Terraform 실행 계획을 적용합니다. 예시:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
SAP 라이브러리 다시 초기화
SSH 클라이언트에서 배포자에 로그인된 상태를 유지합니다. 또는 다시 로그인합니다.
만든 작업 디렉터리로 이동합니다.
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
backend
라는 다른 매개 변수 파일을 만듭니다. 다시 기본 명명 규칙을 따릅니다.resource_group_name
의 경우 Terraform 상태 파일(.tfstate
)이 포함된 스토리지 계정이 있는 리소스 그룹의 이름을 사용합니다.storage_account_name
의 경우<tfstate_storage_account_name>
를.tfstate
파일에 대한 SAP 라이브러리 배포의 스토리지 계정 이름으로 바꿉니다.key
의 경우 배포자의 리소스 그룹 이름을 확장.terraform.tfstate
와 결합합니다. 예시:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP_LIBRARY.terraform.tfstate" EOF
매개 변수 파일
backend
의 여는 대괄호({
) 바로 뒤에 새 키-값 쌍을 추가합니다.tfstate_resource_id
deployer_tfstate_key
의 경우 배포자 상태 파일의 키 이름을 사용합니다. 예시:{ "tfstate_resource_id" : "<identifier>", "deployer_tfstate_key" : "<key>", "infrastructure": { ... }
Terraform을 다시 초기화합니다.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_library/
기존 상태를 새 백 엔드에 복사하시겠습니까?라는 메시지가 표시되면
yes
를 입력합니다.로컬 상태 파일을 제거합니다.
rm terraform.tfstate*
Terraform 실행 계획을 만듭니다. 다시 기본 명명 규칙을 따릅니다. 예시:
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
Terraform 실행 계획을 적용합니다. 예시:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
워크로드 가상 네트워크 배포
다음으로, SAP 워크로드 가상 네트워크를 배포합니다.
SSH 클라이언트에서 배포자에 로그인된 상태를 유지합니다. 또는 다시 로그인합니다.
작업 디렉터리를 만듭니다. 기본 명명 규칙을 따릅니다.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
backend
라는 매개 변수 파일을 만듭니다.resource_group_name
의 경우 Terraform 상태 파일(.tfstate
)이 포함된 스토리지 계정이 있는 리소스 그룹의 이름을 사용합니다.storage_account_name
의 경우<tfstate_storage_account_name>
를.tfstate
파일에 대한 SAP 라이브러리 배포의 스토리지 계정 이름으로 바꿉니다.key
의 경우 배포자의 리소스 그룹 이름을 확장.terraform.tfstate
와 결합합니다. 예시:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP00-INFRASTRUCTURE.terraform.tfstate" EOF
Terraform을 다시 초기화합니다.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Terraform 실행 계획을 만듭니다. 다시 기본 명명 규칙을 따릅니다. 예시:
terraform plan \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Terraform 실행 계획을 적용합니다. 예시:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
SAP 배포 단위
다음으로, SAP 배포 단위를 설정합니다.
SSH 클라이언트에서 배포자에 로그인된 상태를 유지합니다. 또는 다시 로그인합니다.
작업 디렉터리를 만듭니다. 기본 명명 규칙을 따릅니다.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
backend
라는 다른 매개 변수 파일을 만듭니다.resource_group_name
의 경우 Terraform 상태 파일(.tfstate
)이 포함된 스토리지 계정이 있는 리소스 그룹의 이름을 사용합니다.storage_account_name
의 경우<tfstate_storage_account_name>
를.tfstate
파일에 대한 SAP 라이브러리 배포의 스토리지 계정 이름으로 바꿉니다.key
의 경우 배포자의 리소스 그룹 이름을 확장.terraform.tfstate
와 결합합니다. 예시:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP00-X00.terraform.tfstate" EOF
다음과 같이 입력 매개 변수를 사용하여 JSON 매개 변수 파일을 만듭니다. 샘플 값을 사용자 고유의 값으로 바꿔야 합니다.
cat <<EOF > DEMO-EUS2-SAP00-X00.json { "tfstate_resource_id" : "<resource-id>", "deployer_tfstate_key" : "DEMO-EUS2-DEP00-INFRASTRUCTURE.terraform.tfstate", "landscape_tfstate_key" : "DEMO-EUS2-SAP00-INFRASTRUCTURE.terraform.tfstate", "infrastructure": { "environment" : "DEMO", "region" : "eastus2", "vnets": { "sap": { "name" : "SAP00", "subnet_db": { "prefix" : "0.0.0.0/28" }, "subnet_web": { "prefix" : "0.0.0.0/28" }, "subnet_app": { "prefix" : "0.0.0.0/27" }, "subnet_admin": { "prefix" : "0.0.0.0/27" } } } }, "databases": [ { "platform" : "HANA", "high_availability" : false, "size" : "S4Demo", "os": { "publisher" : "SUSE", "offer" : "sles-sap-12-sp5", "sku" : "gen2", "version" : "latest" } } ], "application": { "enable_deployment" : true, "sid" : "X00", "scs_instance_number" : "00", "ers_instance_number" : "10", "scs_high_availability" : false, "application_server_count" : 3, "webdispatcher_count" : 1, "authentication": { "type" : "key", "username" : "azureadm" } } } EOF
Terraform을 다시 초기화합니다.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_system/
Terraform 실행 계획을 만듭니다. 다시 기본 명명 규칙을 따릅니다. 예시:
terraform plan \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
Terraform 실행 계획을 적용합니다. 예시:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
Ansible 구성
Ansible 플레이북을 실행하여 설정을 구성합니다. 이러한 플레이북은 /sap-automation/deploy/ansible
의 자동화 프레임워크 리포지토리에 있습니다.
Filename | 설명 |
---|---|
playbook_01_os_base_config.yaml |
기본 OS(운영 체제) 구성 |
playbook_02_os_sap_specific_config.yaml |
SAP별 OS 구성 |
playbook_03_bom_processing.yaml |
SAP BOM(자재 명세서) 처리 소프트웨어 다운로드 |
playbook_04a_sap_scs_install.yaml |
SAP SCS(SAP Central Service) 설치 |
playbook_05a_hana_db_install.yaml |
SAP HANA 데이터베이스 설치 |
playbook_06a_sap_dbload.yaml |
데이터베이스 로더 |
playbook_06b_sap_pas_install.yaml |
SAP PAS(기본 애플리케이션 서버) 설치 |
playbook_06c_sap_app_install.yaml |
SAP 애플리케이션 서버 설치 |
playbook_06d_sap_web_install.yaml |
SAP 웹 디스패처 설치 |
playbook_06_00_00_pacemaker.yaml |
Pacemaker 클러스터 구성 |
playbook_06_00_01_pacemaker_scs.yaml |
SCS에 대한 Pacemaker 구성 |
playbook_06_00_03_pacemaker_hana.yaml |
SAP HANA 데이터베이스에 대한 Pacemaker 구성 |
플레이북 또는 여러 플레이북을 실행하려면 다음과 같이 ansible-playbook
명령을 사용합니다. 모든 자리 표시자 값을 자신의 정보로 변경해야 합니다.
<your-sapbits-path>
를 SAP 라이브러리의 스토리지 계정sapbits
경로로 변경합니다.<azure-admin>
을 Azure 관리자 사용자 이름으로 변경합니다.<ssh-key
를 > 사용할 프라이빗 SSH 키로 변경합니다.- 설정에 필요한 대로
--extra-vars
에서 다른 값을 변경합니다.
이슈가 발생하면 Azure 환경에 SAP 소프트웨어를 다운로드했는지 확인합니다.
export ANSIBLE_HOST_KEY_CHECKING=False
# export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=Yes
# export ANSIBLE_KEEP_REMOTE_FILES=1
ansible-playbook \
--inventory new-hosts.yaml \
--user <azure-admin> \
--private-key <ssh-key> \
--extra-vars="{ \
\"bom_base_name\": \"HANA_2_00_053_v001\", \
\"download_templates\": \"false\", \
\"sapbits_location_base_path\": \"<your-sapbits-path>", \
\"target_media_location\": \"/usr/sap/install\", \
\"sap_sid\": \"X00\", \
\"hdb_sid\": \"HDB\" \
}" \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_00_transition_start_for_sap_install_refactor.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_01_os_base_config.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_02_os_sap_specific_config.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_03_bom_processing.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04a_sap_scs_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05a_hana_db_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06a_sap_dbload.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06b_sap_pas_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06c_sap_app_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06d_sap_web_install.yaml