Начало работы по развертыванию вручную

Наряду с автоматизированным развертыванием можно также выполнить развертывание SAP на платформе автоматизации развертывания Azure вручную. Используйте эти примеры параметров конфигурации и файлов параметров, чтобы приступить к работе.

Совет

В этом руководстве рассматривается только ручное развертывания. Если вы хотите быстро приступить к работе, см. руководство по автоматическому развертыванию.

В этих инструкциях упоминается и используется соглашение об именовании по умолчанию для платформы автоматизации. В коде для именования также используются примеры значений. Например, имя средства развертывания — DEMO-EUS2-DEP00-INFRASTRUCTURE. В этом примере среда представляет собой демонстрационную версию (DEMO), регион — Восточная часть США 2 (EUS2), а виртуальная сеть средства развертывания — DEP00.

Предварительные требования

Настройка средства развертывания

Перед началом убедитесь, что вы находитесь в правильной подписке Azure. Затем настройте средство развертывания:

  1. Загрузите и установите Terraform.
  2. Клонируйте и настройте репозиторий платформы автоматизации в средстве развертывания.
  3. Инициализация Terraform
  4. Получите ключи SSH, которые будете использовать далее в развертывании.

Проверка подписки Azure

Убедитесь, что используете правильную подписку Azure:

  1. Войдите на портал Azure.

  2. Откройте Azure Cloud Shell.

  3. Убедитесь, что вы используете правильную подписку:

    az account list --output=table | grep -i true
    
  4. При необходимости измените активную подписку на подписку, которую хотите использовать.

Загрузка Terraform

Скачайте Terraform в свою среду:

  1. Создайте новый каталог bin и перейдите в него.

    mkdir -p ~/bin; cd $_
    
  2. Получите соответствующий двоичный файл Terraform. Пример:

    wget  https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
    
  3. Распакуйте файл Terraform. Пример:

    unzip terraform_0.14.7_linux_amd64.zip
    
  4. Проверьте загруженный файл Terraform:

    hash terraform
    
  5. Создайте каталог для автоматического развертывания SAP.

    mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
    

Настройка репозитория

Клонируйте и настройте репозиторий платформы автоматизации.

  1. Клонируйте репозиторий с GitHub.

    git clone https://github.com/Azure/sap-automation.git
    
  2. Перейдите в папку sap-automation.

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. При необходимости можно проверить ветвь, не являющуюся главной. Главной ветвью для репозитория является ветвь default.

    1. Замените <branch> на имя ветви или хэш фиксации, который хотите использовать.

      git checkout <branch>
      
    2. Убедитесь, что ваша ветвь относится к нужному выпуску.

      git rev-parse HEAD
      

Инициализация Terraform

  1. Создайте рабочий каталог. Имя каталога должно соответствовать соглашению об именовании по умолчанию. Пример:

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
    
  2. Создайте файл параметров 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. Инициализируйте Terraform.

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  4. Создайте план выполнения Terraform, который соответствует правилам именования по умолчанию.

    terraform plan                                                                    \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                    \
                    ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  5. Примените план выполнения Terraform, чтобы развернуть ресурсы.

    terraform apply --auto-approve                                                    \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                    \
                    ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  6. Обратите внимание на выходные данные.

Получение ключей SSH

  1. В выходных данных развертывания Terraform обратите внимание на значения указанных ниже полей.

    1. Общедоступный IP-адрес: deployer_public_ip_address.

    2. Имя пользователя в хранилище ключей: deployer_kv_user_name.

    3. Имя хранилища закрытого ключа: deployer_kv_prvt_name.

    4. Имя открытого ключа: deployer_public_key_secret_name.

    5. Имя закрытого ключа: deployer_private_key_secret_name.

  2. Запустите скрипт после обработки.

    ./post_deployment.sh
    
  3. Извлеките закрытый ключ SSH:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userE27   \
      --name DEMO-EUS2-DEP00-sshkey     | \
      jq -r .value > sshkey
    
    
  4. Извлеките открытый ключ SSH:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userF6A   \
      --name DEMO-EUS2-DEP00-sshkey-pub | \
      jq -r .value > sshkey.pub
    
    
  5. Скачайте пару закрытого и открытого ключа. В меню Cloud Shell выберите Отправить/загрузить файлы>Загрузить.

Конфигурация субъекта-службы

Средство развертывания использует субъект-службу для развертывания ресурсов в подписке.

  1. Войдите в Azure CLI.

    az login
    
  2. Создание субъекта-службы. Не забудьте заменить <subscription-id> на идентификатор подписки Azure. Также замените <sp-name> именем субъекта-службы.

    az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
    
  3. Обратите внимание на выходные данные, которые содержат сведения о субъекте-службе. Скопируйте значения следующих полей:

    1. Идентификатор приложения: appId.

    2. Пароль: password.

    3. Идентификатор арендатора: tenant.

  4. Создайте назначение роли для субъекта-службы. Обязательно замените <appId> идентификатором приложения, записанным на предыдущем шаге.

    az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
    
  5. Добавьте ключи для субъекта-службы в хранилище ключей, как показано ниже. Обязательно замените значения заполнителей сведениями, сохраненными на предыдущих шагах. Замените <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>";
    

Конфигурация библиотеки

  1. Войдите в средство развертывания с помощью клиента SSH и ключей SSH, полученных на этапе установки средства развертывания. Если вы используете PuTTY в качестве клиента SSH, преобразуйте ключи SSH в формат .ppk перед использованием.

  2. Перейдите туда, куда вы клонировали репозиторий платформы автоматизации.

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. При необходимости можно проверить ветвь, не являющуюся главной. Главной ветвью для репозитория является ветвь default.

    1. Замените <branch> на имя ветви или хэш фиксации, который хотите использовать.

      git checkout <branch>
      
    2. Убедитесь, что ваша ветвь относится к нужному выпуску.

      git rev-parse HEAD
      
  4. Создайте рабочий каталог.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
    
  5. Создайте файл конфигурации в формате JSON.

    cat <<EOF > DEMO-EUS2-SAP_LIBRARY.json
    {
      "infrastructure": {
        "environment"                         : "DEMO",
        "region"                              : "eastus2"
      },
      "deployer": {
        "environment"                         : "DEMO",
        "region"                              : "eastus2",
        "vnet"                                : "DEP00"
      }
    }
    EOF
    
  6. Инициализируйте Terraform.

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
    
  7. Создайте план выполнения Terraform, который соответствует правилам именования по умолчанию.

    terraform plan                                                                  \
                --var-file=DEMO-EUS2-SAP_LIBRARY.json                           \
                ../../../sap-automation/deploy/terraform/bootstrap/sap_library
    
    
  8. Примените план выполнения Terraform, чтобы развернуть ресурсы.

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

Повторная инициализация развертывания

Повторно инициализируйте средство развертывания и библиотеку SAP.

Повторная инициализация средства развертывания

  1. Не выходите из средства развертывания в клиенте SSH. Если вы уже вышли, войдите еще раз.

  2. Перейдите к созданному вами рабочему каталогу.

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
    
  3. Создайте другой файл параметров с именем backend. Также следуйте соглашениям об именовании по умолчанию. Для resource_group_name используйте имя группы ресурсов, в которой находится учетная запись хранения с файлами состояния Terraform (.tfstate). Для storage_account_name замените <tfstate_storage_account_name> именем учетной записи хранения из развертывания библиотеки SAP для файлов .tfstate. Для 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
    
  4. Снова инициализируйте Terraform.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  5. При появлении запроса вы Скопировать существующее состояние в новую серверную часть? введите yes.

  6. Удалите локальный файл состояния.

    rm terraform.tfstate*
    
  7. Создание плана выполнения Terraform. Также следуйте соглашениям об именовании по умолчанию. Пример:

    terraform plan                                                                  \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                  \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  8. Примените план выполнения Terraform. Пример:

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

Повторная инициализация библиотеки SAP

  1. Не выходите из средства развертывания в клиенте SSH. Если вы уже вышли, войдите еще раз.

  2. Перейдите к созданному вами рабочему каталогу.

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
    
  3. Создайте другой файл параметров с именем backend. Также следуйте соглашениям об именовании по умолчанию. Для resource_group_name используйте имя группы ресурсов, в которой находится учетная запись хранения с файлами состояния Terraform (.tfstate). Для storage_account_name замените <tfstate_storage_account_name> именем учетной записи хранения из развертывания библиотеки SAP для файлов .tfstate. Для 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
    
  4. Добавьте новую пару "ключ-значение" сразу после открывающей квадратной скобки ({) файла параметров backend. Для tfstate_resource_id используйте идентификатор ресурса для учетной записи хранения файла состояния Terraform. Для deployer_tfstate_key используйте имя ключа для файла состояния средства развертывания. Пример:

    {
        "tfstate_resource_id"                   : "<identifier>",
        "deployer_tfstate_key"                  : "<key>",
        "infrastructure": {
            ...
    }
    
  5. Снова инициализируйте Terraform.

    terraform init  --backend-config backend                                          \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  6. При появлении запроса вы Скопировать существующее состояние в новую серверную часть? введите yes.

  7. Удалите локальный файл состояния.

    rm terraform.tfstate*
    
  8. Создание плана выполнения Terraform. Также следуйте соглашениям об именовании по умолчанию. Пример:

    terraform plan                                                                    \
                    --var-file=DEMO-EUS2-SAP_LIBRARY.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  9. Примените план выполнения Terraform. Пример:

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

Развертывание виртуальной сети рабочей нагрузки

Затем разверните виртуальную сеть SAP для рабочей нагрузки.

  1. Не выходите из средства развертывания в клиенте SSH. Если вы уже вышли, войдите еще раз.

  2. Создайте рабочий каталог. Следуйте соглашениям об именовании по умолчанию.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
    
  3. Создайте файл параметров с именем backend . Для resource_group_name используйте имя группы ресурсов, в которой находится учетная запись хранения с файлами состояния Terraform (.tfstate). Для storage_account_name замените <tfstate_storage_account_name> именем учетной записи хранения из развертывания библиотеки SAP для файлов .tfstate. Для 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
    
  4. Снова инициализируйте Terraform.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  5. Создание плана выполнения Terraform. Также следуйте соглашениям об именовании по умолчанию. Пример:

    terraform plan                                                                  \
                --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json                  \
                ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  6. Примените план выполнения Terraform. Пример:

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

Единица развертывания SAP

Затем настройте единицу развертывания SAP.

  1. Не выходите из средства развертывания в клиенте SSH. Если вы уже вышли, войдите еще раз.

  2. Создайте рабочий каталог. Следуйте соглашениям об именовании по умолчанию.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
    
  3. Создайте другой файл параметров с именем backend. Для resource_group_name используйте имя группы ресурсов, в которой находится учетная запись хранения с файлами состояния Terraform (.tfstate). Для storage_account_name замените <tfstate_storage_account_name> именем учетной записи хранения из развертывания библиотеки SAP для файлов .tfstate. Для 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
    
  4. Создайте файл параметров 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
    
  5. Снова инициализируйте Terraform.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
    
  6. Создание плана выполнения Terraform. Также следуйте соглашениям об именовании по умолчанию. Пример:

    terraform plan                                                                  \
                    --var-file=DEMO-EUS2-SAP00-X00.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
  7. Примените план выполнения 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.

имя_файла Описание
playbook_01_os_base_config.yaml Базовая конфигурация операционной системы (ОС)
playbook_02_os_sap_specific_config.yaml Конфигурация ОС, относящаяся к SAP
playbook_03_bom_processing.yaml Загрузка программного обеспечения для обработки спецификации (BOM) SAP
playbook_04a_sap_scs_install.yaml Установка SAP Central Services (SCS)
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 Ecnfyjdrf сервера приложений SAP
playbook_06d_sap_web_install.yaml Установка веб-диспетчера SAP
playbook_06_00_00_pacemaker.yaml Конфигурации кластера Pacemaker
playbook_06_00_01_pacemaker_scs.yaml Конфигурация Pacemaker для SCS
playbook_06_00_03_pacemaker_hana.yaml Конфигурация Pacemaker для базы данных SAP HANA

Для выполнения одного или нескольких сборников схем используйте команду ansible-playbook, как показано ниже. Замените все значения заполнителей реальными данными:

  • Замените <your-sapbits-path> на путь к своей учетной записи хранения sapbits для библиотеки SAP.
  • Замените <azure-admin> на имя пользователя администратора Azure.
  • Замените <ssh-key> на закрытый ключ SSH, который хотите использовать.
  • При необходимости измените другие значения в --extra-vars соответствии со своими настройками.

При возникновении проблем убедитесь, что загрузили программное обеспечение SAP в среду 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

Дальнейшие действия