Mulai dengan penyebaran manual

Seiring dengan penyebaran otomatis, Anda juga dapat melakukan penyebaran manual SAP di Azure Deployment Automation Framework. Gunakan contoh konfigurasi dan contoh file parameter ini untuk memulai.

Tip

Panduan ini hanya mencakup cara melakukan penyebaran manual. Jika Anda ingin memulai dengan cepat, lihat panduan penyebaran otomatis.

Langkah-langkah ini merujuk dan menggunakan konvensi penamaan default untuk kerangka kerja otomatisasi. Nilai contoh juga digunakan untuk penamaan di seluruh kode. Misalnya, nama penyebar adalah DEMO-EUS2-DEP00-INFRASTRUCTURE. Dalam contoh ini, lingkungannya adalah demo (DEMO), wilayahnya adalah East US 2 (EUS2), dan jaringan virtual penyebar adalah DEP00.

Prasyarat

Penyiapan penyebar

Sebelum Anda mulai, periksa apakah Anda berlangganan Azure yang benar. Kemudian, siapkan penyebar Anda:

  1. Unduh dan pasang Terraform.
  2. Klon dan konfigurasikan repositori kerangka kerja otomatisasi pada penyebar.
  3. Inisialisasi Terraform
  4. Dapatkan kunci SSH Anda untuk digunakan di sisa penyebaran Anda.

Periksa langganan Azure

Verifikasi bahwa Anda menggunakan langganan Azure yang sesuai:

  1. Masuk ke portal Azure.

  2. Buka Azure Cloud Shell.

  3. Periksa apakah Anda termasuk dalam langganan yang ingin Anda gunakan:

    az account list --output=table | grep -i true
    
  4. Jika perlu, ubah langganan aktif menjadi langganan yang ingin Anda gunakan.

Unduh Terraform

Unduh Terraform ke lingkungan Anda:

  1. Buat dan navigasikan ke direktori baru, bin.

    mkdir -p ~/bin; cd $_
    
  2. Ambil biner Terraform yang sesuai. Contohnya:

    wget  https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
    
  3. Buka zip biner Terraform. Contohnya:

    unzip terraform_0.14.7_linux_amd64.zip
    
  4. Verifikasi unduhan Terraform Anda:

    hash terraform
    
  5. Buat direktori untuk penyebaran otomatis SAP Anda.

    mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
    

Siapkan repositori

Menggandakan dan mengonfigurasi repositori kerangka kerja otomatisasi.

  1. Kloning repositori dari GitHub:

    git clone https://github.com/Azure/sap-automation.git
    
  2. Navigasi ke folder sap-automation.

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. Secara opsional, periksa cabang yang berbeda dari cabang utama. Cabang utama untuk repositori adalah default.

    1. Ganti <branch> dengan nama cabang atau komit hash yang ingin Anda gunakan.

      git checkout <branch>
      
    2. Periksa apakah cabang Anda berada pada revisi yang diharapkan.

      git rev-parse HEAD
      

Inisialisasi Terraform

  1. Buat direktori kerja. Nama direktori harus mematuhi konvensi penamaan default. Contohnya:

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
    
  2. Buat file parameter 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
    
  3. Menginisialisasi Terraform.

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  4. Buat rencana eksekusi Terraform yang mengikuti konvensi penamaan default.

    terraform plan                                                                    \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                    \
                    ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  5. Terapkan rencana eksekusi Terraform Anda untuk menyebarkan sumber daya.

    terraform apply --auto-approve                                                    \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                    \
                    ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  6. Catat outputnya.

Dapatkan kunci SSH

  1. Dengan menggunakan keluaran dari penyebaran Terraform, catat nilai untuk bidang berikut.

    1. Alamat IP publik: deployer_public_ip_address.

    2. Nama pengguna brankas kunci: deployer_kv_user_name.

    3. Nama brankas kunci privat: deployer_kv_prvt_name.

    4. Nama kunci publik: deployer_public_key_secret_name.

    5. Nama kunci privat: deployer_private_key_secret_name.

  2. Jalankan skrip pasca-pemrosesan.

    ./post_deployment.sh
    
  3. Ekstrak kunci SSH privat:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userE27   \
      --name DEMO-EUS2-DEP00-sshkey     | \
      jq -r .value > sshkey
    
    
  4. Ekstrak kunci SSH publik:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userF6A   \
      --name DEMO-EUS2-DEP00-sshkey-pub | \
      jq -r .value > sshkey.pub
    
    
  5. Unduh pasangan kunci privat dan publik. Di menu Cloud Shell, pilih Unggah/Unduh file>Unduh.

Konfigurasi utama layanan

Penyebar menggunakan perwakilan layanan untuk menyebarkan sumber daya ke dalam langganan.

  1. Masuk ke Azure CLI.

    az login
    
  2. Membuat perwakilan layanan. Pastikan untuk mengganti <subscription-id> dengan pengidentifikasi langganan Azure Anda. Ganti juga <sp-name> dengan nama perwakilan layanan Anda.

    az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
    
  3. Perhatikan output, yang berisi informasi tentang perwakilan layanan. Salin nilai bidang berikut:

    1. Pengidentifikasi aplikasi: appId.

    2. Sandi: password.

    3. Pengidentifikasi penyewa: tenant.

  4. Buat penetapan peran untuk perwakilan layanan. Pastikan untuk mengganti <appId> dengan pengidentifikasi aplikasi yang Anda catat di langkah sebelumnya.

    az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
    
  5. Tambahkan kunci untuk perwakilan layanan ke brankas kunci sebagai berikut. Pastikan untuk mengganti nilai tempat penampung dengan informasi yang Anda catat di langkah sebelumnya. Ganti <environment> dengan nama lingkungan Anda, seperti 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>";
    

Konfigurasi pustaka

  1. Masuk ke penyebar menggunakan klien SSH dan kunci SSH yang Anda ambil selama penyiapan penyebar. Jika Anda menggunakan Putty sebagai klien SSH, konversi kunci SSH ke format .ppk sebelum digunakan.

  2. Arahkan ke tempat Anda mengkloning repositori kerangka kerja otomatisasi.

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. Secara opsional, periksa cabang yang berbeda dari cabang utama. Cabang utama untuk repositori adalah default.

    1. Ganti <branch> dengan nama cabang atau komit hash yang ingin Anda gunakan.

      git checkout <branch>
      
    2. Periksa apakah cabang Anda berada pada revisi yang diharapkan.

      git rev-parse HEAD
      
  4. Buat direktori kerja.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
    
  5. Buat file konfigurasi JSON.

    cat <<EOF > DEMO-EUS2-SAP_LIBRARY.json
    {
      "infrastructure": {
        "environment"                         : "DEMO",
        "region"                              : "eastus2"
      },
      "deployer": {
        "environment"                         : "DEMO",
        "region"                              : "eastus2",
        "vnet"                                : "DEP00"
      }
    }
    EOF
    
  6. Menginisialisasi Terraform.

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
    
  7. Buat rencana eksekusi Terraform yang mengikuti konvensi penamaan default.

    terraform plan                                                                  \
                --var-file=DEMO-EUS2-SAP_LIBRARY.json                           \
                ../../../sap-automation/deploy/terraform/bootstrap/sap_library
    
    
  8. Terapkan rencana eksekusi Terraform Anda untuk menyebarkan sumber daya.

    terraform apply --auto-approve                                                  \
                --var-file=DEMO-EUS2-SAP_LIBRARY.json                           \
                ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
    
    

Inisialisasi ulang penyebaran

Inisialisasi ulang penyebar dan pustaka SAP.

Inisialisasi ulang penyebar

  1. Tetap masuk ke penyebar Anda di klien SSH. Atau, masuk lagi.

  2. Arahkan ke direktori kerja yang Anda buat.

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
    
  3. Buat file parameter lain bernama backend. Sekali lagi, ikuti konvensi penamaan default. Untuk resource_group_name, gunakan nama grup sumber daya tempat akun penyimpanan dengan file status Terraform Anda (.tfstate) berada. Untuk storage_account_name, ganti <tfstate_storage_account_name> dengan nama akun penyimpanan dari penyebaran Pustaka SAP untuk file .tfstate. Untuk key, gabungkan nama grup sumber daya penyebar dengan ekstensi .terraform.tfstate. Contohnya:

    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
    
  4. Inisialisasi Terraform lagi.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  5. Saat diminta Apakah Anda ingin menyalin status yang ada ke backend baru?, masukkan yes.

  6. Hapus file status lokal.

    rm terraform.tfstate*
    
  7. Buat rencana eksekusi Terraform. Sekali lagi, ikuti konvensi penamaan default. Contohnya:

    terraform plan                                                                  \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                  \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  8. Terapkan rencana eksekusi Terraform. Contohnya:

    terraform apply --auto-approve                                                  \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                  \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    

Inisialisasi ulang Pustaka SAP

  1. Tetap masuk ke penyebar Anda di klien SSH. Atau, masuk lagi.

  2. Arahkan ke direktori kerja yang Anda buat.

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
    
  3. Buat file parameter lain bernama backend. Sekali lagi, ikuti konvensi penamaan default. Untuk resource_group_name, gunakan nama grup sumber daya tempat akun penyimpanan dengan file status Terraform Anda (.tfstate) berada. Untuk storage_account_name, ganti <tfstate_storage_account_name> dengan nama akun penyimpanan dari penyebaran Pustaka SAP untuk file .tfstate. Untuk key, gabungkan nama grup sumber daya penyebar dengan ekstensi .terraform.tfstate. Contohnya:

    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
    
  4. Tambahkan pasangan nilai kunci baru segera setelah tanda kurung buka ({) dari file parameter backend. Untuk tfstate_resource_id, gunakan pengidentifikasi sumber daya untuk akun penyimpanan file status Terraform. Untuk deployer_tfstate_key, gunakan nama kunci untuk file status penyebar. Contohnya:

    {
        "tfstate_resource_id"                   : "<identifier>",
        "deployer_tfstate_key"                  : "<key>",
        "infrastructure": {
            ...
    }
    
  5. Inisialisasi Terraform lagi.

    terraform init  --backend-config backend                                          \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  6. Saat diminta Apakah Anda ingin menyalin status yang ada ke backend baru?, masukkan yes.

  7. Hapus file status lokal.

    rm terraform.tfstate*
    
  8. Buat rencana eksekusi Terraform. Sekali lagi, ikuti konvensi penamaan default. Contohnya:

    terraform plan                                                                    \
                    --var-file=DEMO-EUS2-SAP_LIBRARY.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  9. Terapkan rencana eksekusi Terraform. Contohnya:

    terraform apply --auto-approve                                                    \
                    --var-file=DEMO-EUS2-SAP_LIBRARY.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    

Sebarkan jaringan virtual beban kerja

Selanjutnya, sebarkan jaringan virtual beban kerja SAP.

  1. Tetap masuk ke penyebar Anda di klien SSH. Atau, masuk lagi.

  2. Buat direktori kerja. Ikuti konvensi penamaan default.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
    
  3. Buat file parameter bernama backend. Untuk resource_group_name, gunakan nama grup sumber daya tempat akun penyimpanan dengan file status Terraform Anda (.tfstate) berada. Untuk storage_account_name, ganti <tfstate_storage_account_name> dengan nama akun penyimpanan dari penyebaran Pustaka SAP untuk file .tfstate. Untuk key, gabungkan nama grup sumber daya penyebar dengan ekstensi .terraform.tfstate. Contohnya:

    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
    
  4. Inisialisasi Terraform lagi.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  5. Buat rencana eksekusi Terraform. Sekali lagi, ikuti konvensi penamaan default. Contohnya:

    terraform plan                                                                  \
                --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json                  \
                ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  6. Terapkan rencana eksekusi Terraform. Contohnya:

    terraform apply --auto-approve                                                  \
                    --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json                  \
                    ../../../sap-automation/deploy/terraform/run/sap_landscape/
    

Unit penyebaran SAP

Selanjutnya, siapkan unit penyebaran SAP.

  1. Tetap masuk ke penyebar Anda di klien SSH. Atau, masuk lagi

  2. Buat direktori kerja. Ikuti konvensi penamaan default.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
    
  3. Buat file parameter lain bernama backend. Untuk resource_group_name, gunakan nama grup sumber daya tempat akun penyimpanan dengan file status Terraform Anda (.tfstate) berada. Untuk storage_account_name, ganti <tfstate_storage_account_name> dengan nama akun penyimpanan dari penyebaran Pustaka SAP untuk file .tfstate. Untuk key, gabungkan nama grup sumber daya penyebar dengan ekstensi .terraform.tfstate. Contohnya:

    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
    
  4. Buat file parameter JSON dengan parameter input sebagai berikut. Pastikan untuk mengganti nilai sampel dengan nilai Anda sendiri.

    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
    
  5. Inisialisasi Terraform lagi.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
    
  6. Buat rencana eksekusi Terraform. Sekali lagi, ikuti konvensi penamaan default. Contohnya:

    terraform plan                                                                  \
                    --var-file=DEMO-EUS2-SAP00-X00.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
  7. Terapkan rencana eksekusi Terraform. Contohnya:

    terraform apply --auto-approve                                                  \
                    --var-file=DEMO-EUS2-SAP00-X00.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    

Konfigurasi yang memungkinkan

Konfigurasikan penyiapan Anda dengan menjalankan Playbook Ansible. Playbook ini terletak di repositori kerangka kerja otomatisasi di /sap-automation/deploy/ansible.

Filename Deskripsi
playbook_01_os_base_config.yaml Konfigurasi sistem operasi (OS) dasar
playbook_02_os_sap_specific_config.yaml Konfigurasi OS khusus SAP
playbook_03_bom_processing.yaml Unduhan perangkat lunak pemrosesan SAP Bill of Materials (BOM)
playbook_04a_sap_scs_install.yaml Penginstalan layanan pusat SAP (SCS)
playbook_05a_hana_db_install.yaml Penginstalan basis data SAP Hana
playbook_06a_sap_dbload.yaml Pemuat database
playbook_06b_sap_pas_install.yaml Penginstalan server aplikasi utama (PAS) SAP
playbook_06c_sap_app_install.yaml Penginstalan server aplikasi SAP
playbook_06d_sap_web_install.yaml Penginstalan operator web SAP
playbook_06_00_00_pacemaker.yaml Konfigurasi kluster alat pacu jantung
playbook_06_00_01_pacemaker_scs.yaml Konfigurasi alat pacu jantung untuk SCS
playbook_06_00_03_pacemaker_hana.yaml Konfigurasi alat pacu jantung untuk database SAP Hana

Untuk menjalankan playbook atau beberapa playbook, gunakan perintah ansible-playbook sebagai berikut. Pastikan untuk mengubah semua nilai tempat penampung menjadi informasi Anda sendiri:

  • Ubah <your-sapbits-path> ke jalur ke akun penyimpanan Anda sapbits untuk Pustaka SAP.
  • Ubah <azure-admin> menjadi nama pengguna administrator Azure Anda.
  • Ubah <ssh-key> menjadi kunci SSH privat yang ingin Anda gunakan.
  • Ubah nilai lain di bawah --extra-vars sesuai kebutuhan untuk setelan Anda.

Jika Anda mengalami masalah, pastikan Anda telah mengunduh perangkat lunak SAP ke lingkungan Azure Anda.

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

Langkah berikutnya