Dela via


Kom igång med manuell distribution

Tillsammans med automatiserad distribution kan du även utföra manuell distribution av SAP i Azure Deployment Automation Framework. Använd det här exemplet på konfigurations- och exempelparameterfiler för att komma igång.

Dricks

Den här guiden beskriver bara hur du utför en manuell distribution. Om du vill komma igång snabbt kan du läsa guiden för automatiserad distribution i stället.

De här stegen refererar till och använder standardnamngivningskonventionen för automationsramverket. Exempelvärden används också för namngivning i hela koden. Distributionsnamnet är DEMO-EUS2-DEP00-INFRASTRUCTUREtill exempel . I det här exemplet är miljön en demo (DEMO), regionen är USA, östra 2 (EUS2) och det virtuella distributionsnätverket är DEP00.

Förutsättningar

Installation av distribuerare

Kontrollera att du har rätt Azure-prenumeration innan du börjar. Konfigurera sedan din distribuerare:

  1. Ladda ned och installera Terraform.
  2. Klona och konfigurera automation framework-lagringsplatsen på distribueraren.
  3. Initiera Terraform
  4. Hämta dina SSH-nycklar för användning i resten av distributionen.

Kontrollera Azure-prenumerationen

Kontrollera att du använder rätt Azure-prenumeration:

  1. Logga in på Azure-portalen.

  2. Öppna Azure Cloud Shell.

  3. Kontrollera att du är i den prenumeration som du vill använda:

    az account list --output=table | grep -i true
    
  4. Om det behövs ändrar du den aktiva prenumerationen till den prenumeration som du vill använda.

Ladda ned Terraform

Ladda ned Terraform till din miljö:

  1. Skapa och navigera till en ny katalog, bin.

    mkdir -p ~/bin; cd $_
    
  2. Hämta lämplig Terraform-binärfil. Till exempel:

    wget  https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
    
  3. Packa upp Terraform-binärfilen. Till exempel:

    unzip terraform_0.14.7_linux_amd64.zip
    
  4. Verifiera din Terraform-nedladdning:

    hash terraform
    
  5. Skapa en katalog för den automatiserade SAP-distributionen.

    mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
    

Konfigurera lagringsplats

Klona och konfigurera automation framework-lagringsplatsen.

  1. Klona lagringsplatsen från GitHub:

    git clone https://github.com/Azure/sap-automation.git
    
  2. Gå till mappen sap-automation.

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. Du kan också checka ut en annan gren än huvudgrenen. Huvudgrenen för lagringsplatsen är standard.

    1. Ersätt <branch> med det grennamn eller incheckningshash som du vill använda.

      git checkout <branch>
      
    2. Kontrollera att din gren har den förväntade revisionen.

      git rev-parse HEAD
      

Initiera Terraform

  1. Skapa en arbetskatalog. Katalognamnet måste följa standardnamnkonventionen. Till exempel:

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
    
  2. Skapa JSON-parameterfilen.

    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. Initiera Terraform.

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  4. Skapa en Terraform-körningsplan som följer standardnamngivningskonventionen.

    terraform plan                                                                    \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                    \
                    ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  5. Använd terraform-körningsplanen för att distribuera resurserna.

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

Hämta SSH-nycklar

  1. Observera värdena för följande fält med hjälp av utdata från Terraform-distributionen.

    1. Offentlig IP-adress: deployer_public_ip_address.

    2. Nyckelvalvets användarnamn: deployer_kv_user_name.

    3. Namnet på det privata nyckelvalvet: deployer_kv_prvt_name.

    4. Namnet på den offentliga nyckeln: deployer_public_key_secret_name.

    5. Namnet på den privata nyckeln: deployer_private_key_secret_name.

  2. Kör skriptet efter bearbetningen.

    ./post_deployment.sh
    
  3. Extrahera den privata SSH-nyckeln:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userE27   \
      --name DEMO-EUS2-DEP00-sshkey     | \
      jq -r .value > sshkey
    
    
  4. Extrahera den offentliga SSH-nyckeln:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userF6A   \
      --name DEMO-EUS2-DEP00-sshkey-pub | \
      jq -r .value > sshkey.pub
    
    
  5. Ladda ned det privata och offentliga nyckelparet. I Cloud Shell-menyn väljer du Ladda upp/ladda ned filer>Ladda ned.

Konfiguration av tjänstens huvudnamn

Distribueraren använder ett huvudnamn för tjänsten för att distribuera resurser till en prenumeration.

  1. Logga in på Azure CLI.

    az login
    
  2. Skapa ett huvudnamn för tjänsten. Se till att ersätta <subscription-id> med din Azure-prenumerationsidentifierare. Ersätt <sp-name> även med ett namn för tjänstens huvudnamn.

    az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
    
  3. Observera utdata, som innehåller information om tjänstens huvudnamn. Kopiera ned värdena för följande fält:

    1. Programidentifierare: appId.

    2. Lösenord: password.

    3. Klientidentifierare: tenant.

  4. Skapa en rolltilldelning för tjänstens huvudnamn. Ersätt <appId> med programidentifieraren som du antecknade i föregående steg.

    az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
    
  5. Lägg till nycklar för tjänstens huvudnamn i nyckelvalvet enligt följande. Ersätt platshållarvärdena med den information som du antecknade i föregående steg. Ersätt <environment> med namnet på din miljö, till exempel 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>";
    

Bibliotekskonfiguration

  1. Logga in på distribueraren med hjälp av din SSH-klient och de SSH-nycklar som du hämtade under konfigurationen av distribueraren. Om du använder PuTTY som SSH-klient konverterar du SSH-nycklarna till .ppk format innan du använder den.

  2. Navigera till den plats där du klonade automation Framework-lagringsplatsen.

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. Du kan också checka ut en annan gren än huvudgrenen. Huvudgrenen för lagringsplatsen är standard.

    1. Ersätt <branch> med det grennamn eller incheckningshash som du vill använda.

      git checkout <branch>
      
    2. Kontrollera att din gren har den förväntade revisionen.

      git rev-parse HEAD
      
  4. Skapa en arbetskatalog.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
    
  5. Skapa JSON-konfigurationsfilen.

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

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
    
  7. Skapa en Terraform-körningsplan som följer standardnamngivningskonventionen.

    terraform plan                                                                  \
                --var-file=DEMO-EUS2-SAP_LIBRARY.json                           \
                ../../../sap-automation/deploy/terraform/bootstrap/sap_library
    
    
  8. Använd terraform-körningsplanen för att distribuera resurserna.

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

Initiera om distributionen

Initiera om både distribueraren och SAP-biblioteket.

Initiera om distributionsverktyget

  1. Håll dig inloggad på din distribuerare i SSH-klienten. Eller logga in igen.

  2. Gå till arbetskatalogen som du skapade.

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
    
  3. Skapa en annan parameterfil med namnet backend. Följ återigen standardkonventionerna för namngivning. För resource_group_nameanvänder du namnet på resursgruppen där lagringskontot med dina Terraform-tillståndsfiler (.tfstate) finns. För storage_account_nameersätter du <tfstate_storage_account_name> med namnet på lagringskontot från SAP-biblioteksdistributionen för .tfstate filer. För keykombinerar du distributionsverktygets resursgruppnamn med tillägget .terraform.tfstate. Till exempel:

    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. Initiera Terraform igen.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  5. När du uppmanas att kopiera befintligt tillstånd till den nya serverdelen? anger du yes.

  6. Ta bort den lokala tillståndsfilen.

    rm terraform.tfstate*
    
  7. Skapa en Terraform-körningsplan. Följ återigen standardkonventionerna för namngivning. Till exempel:

    terraform plan                                                                  \
                    --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json                  \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  8. Tillämpa Terraform-körningsplanen. Till exempel:

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

Initiera SAP-bibliotek igen

  1. Håll dig inloggad på din distribuerare i SSH-klienten. Eller logga in igen.

  2. Gå till arbetskatalogen som du skapade.

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
    
  3. Skapa en annan parameterfil med namnet backend. Följ återigen standardkonventionerna för namngivning. För resource_group_nameanvänder du namnet på resursgruppen där lagringskontot med dina Terraform-tillståndsfiler (.tfstate) finns. För storage_account_nameersätter du <tfstate_storage_account_name> med namnet på lagringskontot från SAP-biblioteksdistributionen för .tfstate filer. För keykombinerar du distributionsverktygets resursgruppnamn med tillägget .terraform.tfstate. Till exempel:

    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. Lägg till ett nytt nyckel/värde-par omedelbart efter den inledande hakparentesen ({) för parameterfilen backend. För tfstate_resource_idanvänder du resursidentifieraren för lagringskontot för Terraform-tillståndsfilen. För deployer_tfstate_keyanvänder du nyckelnamnet för distributionstillståndsfilen. Till exempel:

    {
        "tfstate_resource_id"                   : "<identifier>",
        "deployer_tfstate_key"                  : "<key>",
        "infrastructure": {
            ...
    }
    
  5. Initiera Terraform igen.

    terraform init  --backend-config backend                                          \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  6. När du uppmanas att kopiera befintligt tillstånd till den nya serverdelen? anger du yes.

  7. Ta bort den lokala tillståndsfilen.

    rm terraform.tfstate*
    
  8. Skapa en Terraform-körningsplan. Följ återigen standardkonventionerna för namngivning. Till exempel:

    terraform plan                                                                    \
                    --var-file=DEMO-EUS2-SAP_LIBRARY.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  9. Tillämpa Terraform-körningsplanen. Till exempel:

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

Distribuera virtuellt arbetsbelastningsnätverk

Distribuera sedan det virtuella SAP-arbetsbelastningsnätverket.

  1. Håll dig inloggad på din distribuerare i SSH-klienten. Eller logga in igen.

  2. Skapa en arbetskatalog. Följ standardnamngivningskonventionerna.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
    
  3. Skapa en parameterfil med namnet backend. För resource_group_nameanvänder du namnet på resursgruppen där lagringskontot med dina Terraform-tillståndsfiler (.tfstate) finns. För storage_account_nameersätter du <tfstate_storage_account_name> med namnet på lagringskontot från SAP-biblioteksdistributionen för .tfstate filer. För keykombinerar du distributionsverktygets resursgruppnamn med tillägget .terraform.tfstate. Till exempel:

    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. Initiera Terraform igen.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  5. Skapa en Terraform-körningsplan. Följ återigen standardkonventionerna för namngivning. Till exempel:

    terraform plan                                                                  \
                --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json                  \
                ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  6. Tillämpa Terraform-körningsplanen. Till exempel:

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

SAP-distributionsenhet

Konfigurera sedan SAP-distributionsenheten.

  1. Håll dig inloggad på din distribuerare i SSH-klienten. Eller logga in igen

  2. Skapa en arbetskatalog. Följ standardnamngivningskonventionerna.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
    
  3. Skapa en annan parameterfil med namnet backend. För resource_group_nameanvänder du namnet på resursgruppen där lagringskontot med dina Terraform-tillståndsfiler (.tfstate) finns. För storage_account_nameersätter du <tfstate_storage_account_name> med namnet på lagringskontot från SAP-biblioteksdistributionen för .tfstate filer. För keykombinerar du distributionsverktygets resursgruppnamn med tillägget .terraform.tfstate. Till exempel:

    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. Skapa en JSON-parameterfil med indataparametrar enligt följande. Ersätt exempelvärdena med dina egna.

    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. Initiera Terraform igen.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
    
  6. Skapa en Terraform-körningsplan. Följ återigen standardkonventionerna för namngivning. Till exempel:

    terraform plan                                                                  \
                    --var-file=DEMO-EUS2-SAP00-X00.json                             \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
  7. Tillämpa Terraform-körningsplanen. Till exempel:

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

Ansible-konfiguration

Konfigurera konfigurationen genom att köra Ansible-spelböcker. Dessa spelböcker finns i automation Framework-lagringsplatsen i /sap-automation/deploy/ansible.

Filnamn Description
playbook_01_os_base_config.yaml Konfiguration av basoperativsystem (OS)
playbook_02_os_sap_specific_config.yaml SAP-specifik OS-konfiguration
playbook_03_bom_processing.yaml SAP Bill of Materials (BOM) bearbetning programvara nedladdning
playbook_04a_sap_scs_install.yaml Installation av SAP Central Services (SCS)
playbook_05a_hana_db_install.yaml Installation av SAP HANA-databas
playbook_06a_sap_dbload.yaml Databasinläsare
playbook_06b_sap_pas_install.yaml INSTALLATION av SAP-primär programserver (PAS)
playbook_06c_sap_app_install.yaml Installation av SAP-programserver
playbook_06d_sap_web_install.yaml Installation av SAP Web Dispatcher
playbook_06_00_00_pacemaker.yaml Konfiguration av pacemakerkluster
playbook_06_00_01_pacemaker_scs.yaml Pacemakerkonfiguration för SCS
playbook_06_00_03_pacemaker_hana.yaml Pacemakerkonfiguration för SAP HANA-databas

Om du vill köra en spelbok eller flera spelböcker använder du kommandot ansible-playbook enligt följande. Se till att ändra alla platshållarvärden till din egen information:

  • Ändra <your-sapbits-path> till sökvägen till ditt lagringskonto sapbits för SAP-biblioteket.
  • Ändra <azure-admin> till ditt användarnamn för Azure-administratören.
  • Ändra <ssh-key> till den privata SSH-nyckel som du vill använda.
  • Ändra andra värden under --extra-vars efter behov för dina inställningar.

Om du får problem kontrollerar du att du har laddat ned SAP-programvaran till din Azure-miljö.

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

Nästa steg