Wprowadzenie do ręcznego wdrażania
Oprócz zautomatyzowanego wdrażania można również wykonać ręczne wdrażanie oprogramowania SAP w środowisku Azure Deployment Automation Framework. Użyj tej przykładowej konfiguracji i przykładowych plików parametrów, aby rozpocząć pracę.
Napiwek
W tym przewodniku opisano tylko sposób ręcznego wdrażania. Jeśli chcesz szybko rozpocząć pracę, zobacz zamiast tego przewodnik po zautomatyzowanym wdrażaniu.
Te kroki odwołują się do platformy automatyzacji i używają domyślnej konwencji nazewnictwa. Przykładowe wartości są również używane do nazewnictwa w całym kodzie. Na przykład nazwa narzędzia wdrażania to DEMO-EUS2-DEP00-INFRASTRUCTURE
. W tym przykładzie środowisko to pokaz (DEMO
), region to Wschodnie stany USA 2 (EUS2
), a sieć wirtualna wdrażania to DEP00
.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, możesz utworzyć bezpłatne konto.
- Konto platformy Azure z uprawnieniami do utworzenia jednostki usługi.
- Pobieranie oprogramowania SAP w środowisku platformy Azure.
Konfiguracja narzędzia do wdrażania
Przed rozpoczęciem sprawdź, czy jesteś w odpowiedniej subskrypcji platformy Azure. Następnie skonfiguruj narzędzie do wdrażania:
- Pobierz i zainstaluj program Terraform.
- Sklonuj i skonfiguruj repozytorium struktury automatyzacji w narzędziu wdrażania.
- Inicjowanie narzędzia Terraform
- Pobierz klucze SSH do użycia w pozostałej części wdrożenia.
Sprawdzanie subskrypcji platformy Azure
Sprawdź, czy używasz odpowiedniej subskrypcji platformy Azure:
Zaloguj się w witrynie Azure Portal.
Sprawdź, czy jesteś w subskrypcji, której chcesz użyć:
az account list --output=table | grep -i true
W razie potrzeby zmień aktywną subskrypcję na subskrypcję, której chcesz użyć.
Pobierz narzędzie Terraform
Pobierz narzędzie Terraform do środowiska:
Utwórz i przejdź do nowego katalogu .
bin
mkdir -p ~/bin; cd $_
Pobierz odpowiedni plik binarny narzędzia Terraform. Przykład:
wget https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
Rozpakuj plik binarny narzędzia Terraform. Przykład:
unzip terraform_0.14.7_linux_amd64.zip
Zweryfikuj pobieranie narzędzia Terraform:
hash terraform
Utwórz katalog dla zautomatyzowanego wdrażania sap.
mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
Konfigurowanie repozytorium
Sklonuj i skonfiguruj repozytorium struktury automatyzacji.
Sklonuj repozytorium z usługi GitHub:
git clone https://github.com/Azure/sap-automation.git
Przejdź do folderu
sap-automation
.cd ~/Azure_SAP_Automated_Deployment/sap-automation
Opcjonalnie wyewidencjonuj inną gałąź niż gałąź główna. Gałąź główna repozytorium jest domyślna.
Zastąp
<branch>
ciąg nazwą gałęzi lub skrótem zatwierdzenia, którego chcesz użyć.git checkout <branch>
Sprawdź, czy gałąź jest w oczekiwanej wersji.
git rev-parse HEAD
Inicjowanie narzędzia Terraform
Utwórz katalog roboczy. Nazwa katalogu musi przestrzegać domyślnej konwencji nazewnictwa. Przykład:
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
Utwórz plik parametrów 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
Zainicjuj narzędzie Terraform.
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
Utwórz plan wykonywania narzędzia Terraform, który jest zgodny z domyślną konwencją nazewnictwa.
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
Zastosuj plan wykonywania narzędzia Terraform, aby wdrożyć zasoby.
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
Zanotuj dane wyjściowe.
Uzyskiwanie kluczy SSH
Korzystając z danych wyjściowych z wdrożenia programu Terraform, zanotuj wartości następujących pól.
Publiczny adres IP:
deployer_public_ip_address
.Nazwa użytkownika magazynu kluczy:
deployer_kv_user_name
.Nazwa prywatnego magazynu kluczy:
deployer_kv_prvt_name
.Nazwa klucza publicznego:
deployer_public_key_secret_name
.Nazwa klucza prywatnego:
deployer_private_key_secret_name
.
Uruchom skrypt przetwarzania końcowego.
./post_deployment.sh
Wyodrębnij prywatny klucz SSH:
az keyvault secret show \ --vault-name DEMOEUS2DEP00userE27 \ --name DEMO-EUS2-DEP00-sshkey | \ jq -r .value > sshkey
Wyodrębnij publiczny klucz SSH:
az keyvault secret show \ --vault-name DEMOEUS2DEP00userF6A \ --name DEMO-EUS2-DEP00-sshkey-pub | \ jq -r .value > sshkey.pub
Pobierz parę kluczy prywatnych i publicznych. W menu usługi Cloud Shell wybierz pozycję Przekaż/Pobierz pliki>Pobierz.
Konfiguracja jednostki usługi
Wdrożenie używa jednostki usługi do wdrażania zasobów w ramach subskrypcji.
Zaloguj się do interfejsu wiersza polecenia platformy Azure.
az login
Tworzenie jednostki usługi. Pamiętaj, aby zastąpić
<subscription-id>
element identyfikatorem subskrypcji platformy Azure. Zastąp<sp-name>
również nazwą jednostki usługi.az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
Zwróć uwagę na dane wyjściowe zawierające informacje o jednostce usługi. Skopiuj wartości następujących pól:
Identyfikator aplikacji:
appId
.Hasło:
password
.Identyfikator dzierżawy:
tenant
.
Utwórz przypisanie roli dla jednostki usługi. Pamiętaj, aby zastąpić
<appId>
element identyfikatorem aplikacji zanotowany w poprzednim kroku.az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
Dodaj klucze dla jednostki usługi do magazynu kluczy w następujący sposób. Pamiętaj, aby zastąpić wartości symboli zastępczych informacjami zanotowanymi w poprzednich krokach. Zastąp
<environment>
ciąg nazwą środowiska, na przykładDEMO
.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>";
Konfiguracja biblioteki
Zaloguj się do narzędzia wdrażania przy użyciu klienta SSH i kluczy SSH pobranych podczas instalacji narzędzia wdrażania. Jeśli używasz programu PuTTY jako klienta SSH, przekonwertuj klucze SSH na
.ppk
format przed użyciem.Przejdź do miejsca sklonowania repozytorium platformy automatyzacji.
cd ~/Azure_SAP_Automated_Deployment/sap-automation
Opcjonalnie wyewidencjonuj inną gałąź niż gałąź główna. Gałąź główna repozytorium jest domyślna.
Zastąp
<branch>
ciąg nazwą gałęzi lub skrótem zatwierdzenia, którego chcesz użyć.git checkout <branch>
Sprawdź, czy gałąź jest w oczekiwanej wersji.
git rev-parse HEAD
Utwórz katalog roboczy.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
Utwórz plik konfiguracji JSON.
cat <<EOF > DEMO-EUS2-SAP_LIBRARY.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2" }, "deployer": { "environment" : "DEMO", "region" : "eastus2", "vnet" : "DEP00" } } EOF
Zainicjuj narzędzie Terraform.
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
Utwórz plan wykonywania narzędzia Terraform, który jest zgodny z domyślną konwencją nazewnictwa.
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library
Zastosuj plan wykonywania narzędzia Terraform, aby wdrożyć zasoby.
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
Ponowne inicjowanie wdrożenia
Ponowne inicjowanie zarówno narzędzia wdrażania , jak i biblioteki SAP.
Ponowne inicjowanie wdrażania
Nie wyloguj się do narzędzia wdrażania w kliencie SSH. Możesz też zalogować się ponownie.
Przejdź do utworzonego katalogu roboczego.
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
Utwórz inny plik parametrów o nazwie
backend
. Ponownie postępuj zgodnie z domyślnymi konwencjami nazewnictwa. W przypadkuresource_group_name
programu użyj nazwy grupy zasobów, w której znajduje się konto magazynu z plikami stanu programu Terraform (.tfstate
). W polustorage_account_name
zastąp<tfstate_storage_account_name>
ciąg nazwą konta magazynu z wdrożenia biblioteki SAP dla.tfstate
plików. W przypadkukey
programu połącz nazwę grupy zasobów dostawcy z rozszerzeniem.terraform.tfstate
. Przykład: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
Ponownie zainicjuj narzędzie Terraform.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
Po wyświetleniu monitu Czy chcesz skopiować istniejący stan do nowego zaplecza?, wprowadź .
yes
Usuń plik stanu lokalnego.
rm terraform.tfstate*
Utwórz plan wykonywania programu Terraform. Ponownie postępuj zgodnie z domyślnymi konwencjami nazewnictwa. Przykład:
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
Zastosuj plan wykonywania narzędzia Terraform. Przykład:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
Ponowne inicjowanie biblioteki SAP
Nie wyloguj się do narzędzia wdrażania w kliencie SSH. Możesz też zalogować się ponownie.
Przejdź do utworzonego katalogu roboczego.
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
Utwórz inny plik parametrów o nazwie
backend
. Ponownie postępuj zgodnie z domyślnymi konwencjami nazewnictwa. W przypadkuresource_group_name
programu użyj nazwy grupy zasobów, w której znajduje się konto magazynu z plikami stanu programu Terraform (.tfstate
). W polustorage_account_name
zastąp<tfstate_storage_account_name>
ciąg nazwą konta magazynu z wdrożenia biblioteki SAP dla.tfstate
plików. W przypadkukey
programu połącz nazwę grupy zasobów dostawcy z rozszerzeniem.terraform.tfstate
. Przykład: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
Dodaj nową parę klucz-wartość bezpośrednio po nawiasie otwierającym (
{
) plikubackend
parametrów . W przypadkutfstate_resource_id
programu użyj identyfikatora zasobu dla konta magazynu plików stanu programu Terraform. W przypadkudeployer_tfstate_key
programu użyj nazwy klucza dla pliku stanu narzędzia wdrażania. Przykład:{ "tfstate_resource_id" : "<identifier>", "deployer_tfstate_key" : "<key>", "infrastructure": { ... }
Ponownie zainicjuj narzędzie Terraform.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_library/
Po wyświetleniu monitu Czy chcesz skopiować istniejący stan do nowego zaplecza?, wprowadź .
yes
Usuń plik stanu lokalnego.
rm terraform.tfstate*
Utwórz plan wykonywania programu Terraform. Ponownie postępuj zgodnie z domyślnymi konwencjami nazewnictwa. Przykład:
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
Zastosuj plan wykonywania narzędzia Terraform. Przykład:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
Wdrażanie sieci wirtualnej obciążenia
Następnie wdróż sieć wirtualną obciążenia SAP.
Nie wyloguj się do narzędzia wdrażania w kliencie SSH. Możesz też zalogować się ponownie.
Utwórz katalog roboczy. Postępuj zgodnie z domyślnymi konwencjami nazewnictwa.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
Utwórz plik parametrów o nazwie
backend
. W przypadkuresource_group_name
programu użyj nazwy grupy zasobów, w której znajduje się konto magazynu z plikami stanu programu Terraform (.tfstate
). W polustorage_account_name
zastąp<tfstate_storage_account_name>
ciąg nazwą konta magazynu z wdrożenia biblioteki SAP dla.tfstate
plików. W przypadkukey
programu połącz nazwę grupy zasobów dostawcy z rozszerzeniem.terraform.tfstate
. Przykład: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
Ponownie zainicjuj narzędzie Terraform.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Utwórz plan wykonywania programu Terraform. Ponownie postępuj zgodnie z domyślnymi konwencjami nazewnictwa. Przykład:
terraform plan \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Zastosuj plan wykonywania narzędzia Terraform. Przykład:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Jednostka wdrażania sap
Następnie skonfiguruj jednostkę wdrażania SAP.
Nie wyloguj się do narzędzia wdrażania w kliencie SSH. Możesz też zalogować się ponownie
Utwórz katalog roboczy. Postępuj zgodnie z domyślnymi konwencjami nazewnictwa.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
Utwórz inny plik parametrów o nazwie
backend
. W przypadkuresource_group_name
programu użyj nazwy grupy zasobów, w której znajduje się konto magazynu z plikami stanu programu Terraform (.tfstate
). W polustorage_account_name
zastąp<tfstate_storage_account_name>
ciąg nazwą konta magazynu z wdrożenia biblioteki SAP dla.tfstate
plików. W przypadkukey
programu połącz nazwę grupy zasobów dostawcy z rozszerzeniem.terraform.tfstate
. Przykład: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
Utwórz plik parametrów JSON z parametrami wejściowymi w następujący sposób. Pamiętaj, aby zastąpić przykładowe wartości własnymi.
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
Ponownie zainicjuj narzędzie Terraform.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_system/
Utwórz plan wykonywania programu Terraform. Ponownie postępuj zgodnie z domyślnymi konwencjami nazewnictwa. Przykład:
terraform plan \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
Zastosuj plan wykonywania narzędzia Terraform. Przykład:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
Konfiguracja rozwiązania Ansible
Skonfiguruj konfigurację, wykonując podręczniki rozwiązania Ansible. Te podręczniki znajdują się w repozytorium struktury automatyzacji w programie /sap-automation/deploy/ansible
.
Nazwa pliku | opis |
---|---|
playbook_01_os_base_config.yaml |
Konfiguracja podstawowego systemu operacyjnego |
playbook_02_os_sap_specific_config.yaml |
Konfiguracja systemu operacyjnego specyficznego dla oprogramowania SAP |
playbook_03_bom_processing.yaml |
Pobieranie oprogramowania do przetwarzania oprogramowania SAP Bill of Materials (BOM) |
playbook_04a_sap_scs_install.yaml |
Instalacja usług centralnych SAP (SCS) |
playbook_05a_hana_db_install.yaml |
Instalacja bazy danych SAP HANA |
playbook_06a_sap_dbload.yaml |
Moduł ładujący bazy danych |
playbook_06b_sap_pas_install.yaml |
Instalacja podstawowego serwera aplikacji SAP (PAS) |
playbook_06c_sap_app_install.yaml |
Instalacja serwera aplikacji SAP |
playbook_06d_sap_web_install.yaml |
Instalacja dyspozytora internetowego SAP |
playbook_06_00_00_pacemaker.yaml |
Konfiguracja klastra Pacemaker |
playbook_06_00_01_pacemaker_scs.yaml |
Konfiguracja programu Pacemaker dla usługi SCS |
playbook_06_00_03_pacemaker_hana.yaml |
Konfiguracja programu Pacemaker dla bazy danych SAP HANA |
Aby wykonać podręcznik lub wiele podręczników, użyj polecenia ansible-playbook
w następujący sposób. Pamiętaj, aby zmienić wszystkie wartości zastępcze na własne informacje:
- Przejdź
<your-sapbits-path>
do ścieżki do kontasapbits
magazynu dla biblioteki SAP. - Przejdź
<azure-admin>
do nazwy użytkownika administratora platformy Azure. - Zmień
<ssh-key
> na prywatny klucz SSH, którego chcesz użyć. - Zmień inne wartości zgodnie
--extra-vars
z potrzebami ustawień.
Jeśli wystąpią problemy, upewnij się, że oprogramowanie SAP zostało pobrane do środowiska platformy Azure.
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