Baca dalam bahasa Inggris

Bagikan melalui


Meningkatkan Kerangka Kerja Otomatisasi Penyebaran SAP

Kerangka Kerja Otomatisasi Penyebaran SAP diperbarui secara berkala. Artikel ini menjelaskan cara memperbarui kerangka kerja.

Prasyarat

Sebelum Anda meningkatkan kerangka kerja, pastikan Anda mencadangkan file status jarak jauh dari tfstate akun penyimpanan di pustaka SAP.

Meningkatkan alur

Anda dapat meningkatkan definisi alur dengan menjalankan Upgrade Pipelines alur.

Membuat alur Tingkatkan Alur secara manual

Jika Anda tidak memiliki Upgrade Pipelines alur, Anda dapat membuatnya secara manual.

Buka folder alur di repositori Anda dan buat definisi alur dengan memilih file dari menu Baru . Beri nama file 21-update-pipelines.yml dan tempelkan konten berikut ke dalam file.

---
  # /*---------------------------------------------------------------------------8
  # |                                                                            |
  # |               This pipeline updates the ADO repository                     |
  # |                                                                            |
  # +------------------------------------4--------------------------------------*/

  name:                                  Update Azure DevOps repository from GitHub $(branch) branch

  parameters:
    - name:                              repository
      displayName:                       Source repository
      type:                              string
      default:                           https://github.com/Azure/sap-automation-bootstrap.git

    - name:                              branch
      displayName:                       Source branch to update from
      type:                              string
      default:                           main

    - name:                              force
      displayName:                       Force the update
      type:                              boolean
      default:                           false

  trigger:                               none

  pool:
    vmImage:                             ubuntu-latest

  variables:
    - name:                              repository
      value:                             ${{ parameters.repository }}
    - name:                              branch
      value:                             ${{ parameters.branch }}
    - name:                              force
      value:                             ${{ parameters.force }}
    - name:                              log
      value:                             logfile_$(Build.BuildId)

  stages:
    - stage:                             Update_DEVOPS_repository
      displayName:                       Update DevOps pipelines
      jobs:
        - job:                           Update_DEVOPS_repository
          displayName:                   Update DevOps pipelines
          steps:
            - checkout:                  self
              persistCredentials:        true
            - bash: |
                #!/bin/bash
                green="\e[1;32m" ; reset="\e[0m" ; boldred="\e[1;31m"

                git config --global user.email "$(Build.RequestedForEmail)"
                git config --global user.name "$(Build.RequestedFor)"
                git config --global pull.ff false
                git config --global pull.rebase false

                git remote add remote-repo $(repository) >> /tmp/$(log) 2>&1

                git fetch --all --tags >> /tmp/$(log) 2>&1
                git checkout --quiet origin/main

                git checkout --quiet remote-repo/main ./pipelines/01-deploy-control-plane.yml
                git checkout --quiet remote-repo/main ./pipelines/02-sap-workload-zone.yml
                git checkout --quiet remote-repo/main ./pipelines/03-sap-system-deployment.yml
                git checkout --quiet remote-repo/main ./pipelines/04-sap-software-download.yml
                git checkout --quiet remote-repo/main ./pipelines/05-DB-and-SAP-installation.yml
                git checkout --quiet remote-repo/main ./pipelines/10-remover-terraform.yml
                git checkout --quiet remote-repo/main ./pipelines/11-remover-arm-fallback.yml
                git checkout --quiet remote-repo/main ./pipelines/12-remove-control-plane.yml
                git checkout --quiet remote-repo/main ./pipelines/20-update-repositories.yml
                git checkout --quiet remote-repo/main ./pipelines/22-sample-deployer-configuration.yml
                git checkout --quiet remote-repo/main ./pipelines/21-update-pipelines.yml
                return_code=$?

                if [[ "$(force)" == "True" ]]; then
                  echo "running git push to ADO with force option"
                  if ! git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" push --force origin HEAD:$(branch) >> /tmp/$(log) 2>&1
                  then
                     echo -e "$red--- Failed to push ---$reset"
                     exit 1
                  fi
                else
                  git commit -m "Update ADO repository from GitHub $(branch) branch" -a
                  echo "running git push to ADO"
                  if ! git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" push origin HEAD:$(branch) >> /tmp/$(log) 2>&1
                  then
                     echo -e "$red--- Failed to push ---$reset"
                     exit 1
                  fi

                fi
                # If Pull already failed then keep that error code
                if [ 0 != $return_code ]; then
                  return_code=$?
                fi

                exit $return_code

              displayName:               Update DevOps pipelines
              env:
                SYSTEM_ACCESSTOKEN:      $(System.AccessToken)
              failOnStderr:              true
...


Terapkan perubahan untuk menyimpan file ke repositori dan membuat alur di Azure DevOps.

Upgrade PipelinesBuat alur dengan memilih Alur Baru dari bagian Alur. Pilih Azure Repos Git sebagai sumber untuk kode Anda. Konfigurasikan alur Anda untuk menggunakan file YAML Azure Pipelines yang sudah ada. Tentukan alur dengan pengaturan berikut.

Pengaturan Nilai
Cabang Utama
Jalur deploy/pipelines/21-update-pipelines.yml
Nama Meningkatkan alur

Simpan alurnya. Untuk melihat opsi Simpan, pilih chevron di samping Jalankan. Buka bagian Alur dan pilih alur. Ganti nama alur menjadi Upgrade pipelines dengan memilih Ganti Nama/Pindahkan dari menu elipsis di sebelah kanan.

Jalankan alur untuk meningkatkan semua definisi alur.

Meningkatkan sarana kontrol

Sarana kontrol adalah komponen pertama yang perlu Anda tingkatkan. Untuk meningkatkan sarana kontrol, jalankan Deploy Control Plane ulang alur atau jalankan deploy_controlplane.sh ulang skrip.

Tingkatkan ke versi 3.8.1

Jalankan perintah berikut sebelum Anda melakukan peningkatan sarana kontrol.


az login

az account set --subscription <subscription id>    

az vm run-command invoke -g <DeployerResourceGroup> -n <deployerVMName> --command-id RunShellScript --scripts "sudo rm /etc/profile.d/deploy_server.sh"
az vm extension delete -g <DeployerResourceGroup> -n <deployerVMName> -n configure_deployer

Skrip menghapus konfigurasi penyebar lama dan memungkinkan konfigurasi baru diterapkan.

Pertimbangan DNS privat

Jika Anda menggunakan zona DNS Privat dari sarana kontrol, jalankan perintah berikut sebelum Anda melakukan peningkatan.


az network private-dns zone create --name privatelink.vaultcore.azure.net --resource-group <SAPLibraryResourceGroup>

Masuk agen

Anda juga dapat mengonfigurasi agen Azure DevOps untuk melakukan masuk ke Azure dengan menggunakan perwakilan layanan. Tambahkan variabel berikut ke grup variabel yang digunakan oleh alur sarana kontrol, yang biasanya SDAF-MGMT.

Nama Nilai
Logon_Using_SPN benar

Meningkatkan Terraform pada agen

Anda dapat meningkatkan Terraform pada agen dengan menjalankan skrip berikut:


tfversion="1.6.5"

# Terraform installation directories
tf_base=/opt/terraform
tf_dir="${tf_base}/terraform_${tfversion}"
tf_bin="${tf_base}/bin"
tf_zip="terraform_${tfversion}_linux_amd64.zip"

#
# Install terraform for all users
#
sudo mkdir -p \
    "${tf_dir}" \
    "${tf_bin}"
wget -nv -O /tmp/"${tf_zip}" "https://releases.hashicorp.com/terraform/${tfversion}/${tf_zip}"
sudo unzip -o /tmp/"${tf_zip}" -d "${tf_dir}"
sudo ln -vfs "../$(basename "${tf_dir}")/terraform" "${tf_bin}/terraform"

Meningkatkan zona beban kerja

Zona beban kerja adalah komponen kedua yang perlu Anda tingkatkan. Untuk meningkatkan sarana kontrol, jalankan SAP Workload Zone deployment ulang alur atau jalankan install_workloadzone.sh ulang skrip.

Tingkatkan ke versi 3.8.1

Bersiaplah untuk peningkatan dengan terlebih dahulu mengambil ID sumber daya zona DNS Privat dan nama titik akhir privat brankas kunci dengan menjalankan perintah berikut:


az network private-dns zone show  --name privatelink.vaultcore.azure.net --resource-group <SAPLibraryResourceGroup> --query id --output tsv

az network private-endpoint list  --resource-group <WorkloadZoneResourceGroup> --query "[?contains(name,'keyvault')].{Name:name} | [0] | Name" --output tsv

Jika Anda menggunakan titik akhir privat, jalankan perintah berikut sebelum Anda melakukan peningkatan untuk memperbarui pengaturan DNS untuk titik akhir privat. privateDNSzoneResourceId Ganti tempat penampung dan keyvaultEndpointName dengan nilai yang diambil di langkah sebelumnya.


az network private-endpoint dns-zone-group create --resource-group <WorkloadZoneResourceGroup> --endpoint-name <keyvaultEndpointName> --name privatelink.vaultcore.azure.net --private-dns-zone <privateDNSzoneResourceId>  --zone-name privatelink.vaultcore.azure.net

Masuk agen untuk zona beban kerja dan penyebaran sistem

Anda juga dapat mengonfigurasi agen Azure DevOps untuk melakukan masuk ke Azure dengan menggunakan perwakilan layanan. Tambahkan variabel berikut ke grup variabel yang digunakan oleh alur sarana kontrol, yang biasanya SDAF-DEV.

Nama Nilai
Logon_Using_SPN benar

Langkah selanjutnya