├── .ansible-lint ├── .gitattributes ├── .github └── workflows │ ├── ansible-lint.yml │ ├── codespell.yml │ └── publish-stage-to-main.yml ├── .gitignore ├── LICENSE ├── README.md ├── deploy_scenarios ├── sap_bw4hana_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_bw4hana_standard_scaleout │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ecc_hana_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ecc_ibmdb2_distributed │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ecc_ibmdb2_distributed_ha │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ecc_ibmdb2_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ecc_oracledb_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ecc_sapase_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ecc_sapmaxdb_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_hana │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_kubevirt_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_hana_ha │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_hana_scaleout │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ides_ecc_hana_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_ides_ecc_ibmdb2_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_landscape_s4hana_standard │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ └── ansible_inventory_noninteractive.yml ├── sap_landscape_s4hana_standard_maintplan │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ └── ansible_inventory_noninteractive.yml ├── sap_nwas_abap_hana_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_nwas_abap_ibmdb2_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_nwas_abap_oracledb_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_nwas_abap_sapase_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_nwas_abap_sapmaxdb_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_nwas_java_ibmdb2_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_nwas_java_sapase_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_distributed │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_distributed_ha │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_distributed_ha_maintplan │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_distributed_maintplan │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_foundation_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_foundation_standard │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_kubevirt_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_sandbox_maintplan │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_standard │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_kubevirt_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_s4hana_standard_maintplan │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_powervs.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_ibmpowervm_vm.yml │ ├── ansible_extravars_kubevirt_vm.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ ├── ansible_extravars_interactive.yml │ │ ├── ansible_inventory_noninteractive.yml │ │ └── interactive │ │ ├── README.md │ │ ├── databases │ │ ├── anydb.yml │ │ ├── anydb_ha.yml │ │ ├── hana.yml │ │ └── hana_ha.yml │ │ ├── main.yml │ │ ├── mandatory_vars.yml │ │ ├── platforms │ │ ├── aws_ec2_vs.yml │ │ ├── bastion.yml │ │ ├── gcp_ce_vm.yml │ │ ├── ibmcloud_powervs.yml │ │ ├── ibmcloud_vs.yml │ │ ├── ibmpowervm_vm.yml │ │ └── msazure_vm.yml │ │ ├── process_host_spec_dictionary.yml │ │ ├── swpm.yml │ │ └── swpm_ha.yml ├── sap_solman_sapase_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ │ ├── ansible_extravars_existing_hosts.yml │ │ └── ansible_inventory_noninteractive.yml └── sap_solman_saphana_sandbox │ ├── README.md │ ├── ansible_extravars.yml │ ├── ansible_extravars_aws_ec2_vs.yml │ ├── ansible_extravars_gcp_ce_vm.yml │ ├── ansible_extravars_ibmcloud_vs.yml │ ├── ansible_extravars_msazure_vm.yml │ ├── ansible_extravars_ovirt_vm.yml │ ├── ansible_extravars_vmware_vm.yml │ ├── ansible_playbook.yml │ ├── ansible_requirements.yml │ └── optional │ ├── ansible_extravars_existing_hosts.yml │ └── ansible_inventory_noninteractive.yml ├── docs ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── DEV_EXECUTION_FLOW.md ├── FAQ.md ├── GET_STARTED_AZURE_DEVOPS.md ├── GET_STARTED_MACOS.md ├── GET_STARTED_WINDOWS.md ├── README.md ├── images │ └── ansible_playbooks_sap_summary.svg └── sample │ └── azure_devops_pipeline_ansible.yml └── special_actions ├── sap_download_install_media ├── README.md ├── ansible_extravars.yml ├── ansible_playbook.yml ├── ansible_requirements.yml └── optional │ └── ansible_inventory_noninteractive.yml ├── sap_sda ├── README.md ├── ansible_extravars.yml ├── ansible_playbook.yml ├── ansible_requirements.yml └── optional │ └── ansible_inventory_noninteractive.yml ├── sap_system_copy_export ├── README.md ├── ansible_extravars.yml ├── ansible_playbook.yml ├── ansible_requirements.yml └── optional │ └── ansible_inventory_noninteractive.yml ├── sap_system_copy_restore_hana_sandbox ├── README.md ├── ansible_extravars.yml ├── ansible_playbook.yml ├── ansible_requirements.yml └── optional │ └── ansible_inventory_noninteractive.yml └── sap_webdispatcher_standalone ├── README.md ├── ansible_extravars.yml ├── ansible_extravars_aws_ec2_vs.yml ├── ansible_extravars_gcp_ce_vm.yml ├── ansible_extravars_ibmcloud_powervs.yml ├── ansible_extravars_ibmcloud_vs.yml ├── ansible_extravars_ibmpowervm_vm.yml ├── ansible_extravars_msazure_vm.yml ├── ansible_extravars_ovirt_vm.yml ├── ansible_extravars_vmware_vm.yml ├── ansible_playbook.yml ├── ansible_requirements.yml └── optional ├── ansible_extravars_existing_hosts.yml └── ansible_inventory_noninteractive.yml /.ansible-lint: -------------------------------------------------------------------------------- 1 | --- 2 | # Collection wide lint-file 3 | # DO NOT CHANGE 4 | exclude_paths: 5 | - .cache/ 6 | - .github/ 7 | #- docs/ 8 | # Ansible requirements are not recognized as valid yaml file 9 | - deploy_scenarios/.*/ansible_requirements\.yml$ 10 | - common_fragments/vars/ansible_requirements.yml 11 | 12 | enable_list: 13 | - yaml 14 | 15 | skip_list: 16 | # We don't want to enforce new Ansible versions for Galaxy: 17 | - meta-runtime[unsupported-version] 18 | 19 | # We do not want to use checks which are marked as experimental: 20 | - experimental 21 | 22 | # # We use ignore_errors for all the assert tasks, which should be acceptable: 23 | # - ignore-errors 24 | 25 | # # We want to allow single digit version numbers in a role's meta/main.yml file: 26 | # - schema 27 | 28 | # Allow templating inside name because it creates more detailed output: 29 | - name[template] 30 | 31 | # Duplicates correct in editable file /optional/ansible_extravars_noninteractive.yml 32 | - yaml[key-duplicates] 33 | 34 | # Used for /etc/hosts edits 35 | - no-tabs 36 | 37 | # Incorrectly shows error for nested {%- endfor -%} already correct indent 38 | - jinja[spacing] 39 | 40 | # Shell commands are required 41 | - no-changed-when 42 | - command-instead-of-shell 43 | 44 | # Prettify problems 45 | - yaml[comments] 46 | - yaml[line-length] 47 | - yaml[empty-lines] 48 | 49 | # Ignore ha_cluster vars used within sap_ha_pacemaker_cluster 50 | # - var-naming[no-role-prefix] 51 | 52 | # Ignore dynamic variable population for Scale-Out 53 | - var-naming[no-jinja] 54 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.yml linguist-detectable -------------------------------------------------------------------------------- /.github/workflows/ansible-lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | name: ansible-lint of the ansible playbooks for sap 4 | 5 | on: 6 | # Runs at 10:10 on every Monday 7 | schedule: 8 | - cron: '10 10 * * 1' 9 | 10 | # Runs on push to dev and main branches 11 | push: 12 | branches: 13 | - dev 14 | - main 15 | 16 | # Enable manual start button 17 | workflow_dispatch: 18 | 19 | jobs: 20 | ansible-lint: 21 | runs-on: ubuntu-latest 22 | 23 | steps: 24 | - name: Check out the code 25 | uses: actions/checkout@v4 26 | with: 27 | path: repo_playbooks 28 | 29 | - name: Set up Python 3 30 | uses: actions/setup-python@v5 31 | with: 32 | python-version: '3.12' 33 | 34 | - name: Install dependencies for Python 35 | run: | 36 | pip3 install --upgrade pip 37 | pip3 install ansible==11.4.0 38 | pip3 install ansible-compat==4.1.11 39 | pip3 install ansible-core==2.18.4 40 | pip3 install ansible-lint==25.2.1 41 | 42 | # dev branch is using shared fragments 43 | - name: Install dependencies for Ansible (dev) 44 | working-directory: repo_playbooks 45 | if: github.ref == 'refs/heads/dev' 46 | run: | 47 | ansible-galaxy collection install -r ./common_fragments/ansible_requirements.yml 48 | 49 | # main branch is using: 50 | # - deploy_scenarios/sap_hana if file exists 51 | # - else first scenario with ansible_requirements.yml 52 | - name: Install dependencies for Ansible (main) 53 | working-directory: repo_playbooks 54 | if: github.ref == 'refs/heads/main' 55 | run: | 56 | if [ -f ./deploy_scenarios/sap_hana/ansible_requirements.yml ]; then 57 | ansible-galaxy collection install -r ./deploy_scenarios/sap_hana/ansible_requirements.yml 58 | else 59 | first_file=$(find ./deploy_scenarios/ -name ansible_requirements.yml -print -quit) 60 | if [ -n "$first_file" ]; then 61 | echo "Using $first_file" 62 | ansible-galaxy collection install -r "$first_file" 63 | else 64 | echo "No ansible_requirements.yml found in deploy_scenarios" 65 | exit 1 66 | fi 67 | fi 68 | 69 | - name: Run ansible-lint 70 | working-directory: repo_playbooks 71 | run: ansible-lint 72 | -------------------------------------------------------------------------------- /.github/workflows/codespell.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: CodeSpell 3 | 4 | on: 5 | # Runs on push and pull request to dev 6 | push: 7 | branches: 8 | - dev 9 | pull_request: 10 | branches: 11 | - dev 12 | 13 | # Enable manual start button 14 | workflow_dispatch: 15 | 16 | jobs: 17 | codespell: 18 | name: Check for spelling errors 19 | runs-on: ubuntu-latest 20 | 21 | steps: 22 | - name: Check out the code 23 | uses: actions/checkout@v4 24 | with: 25 | path: repo_playbooks 26 | 27 | - uses: codespell-project/actions-codespell@v2 28 | with: 29 | path: repo_playbooks 30 | # lowercase only 31 | ignore_words_list: aas,iterm,daa 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore defines files to ignore and remain untracked in Git 2 | # Each line in a gitignore file specifies a pattern, eg. directory or file extension 3 | 4 | # Git should not track binary artifacts such as images, libraries, executables, archive files etc. 5 | # Until the team has mature processes, a Binary Artifacts Repository Manager is not in use. 6 | 7 | # Therefore some binary artifacts are tracked in this Git repository 8 | 9 | 10 | # Further .gitignore templates available at: 11 | # https://github.com/github/gitignore 12 | 13 | 14 | # Ignore keys 15 | *_rsa 16 | 17 | # Ignore embedded tmp dirs 18 | **/ssh 19 | **/tmp 20 | **/tmp_collections 21 | 22 | # Ignore override files as they are usually used to override resources locally and so 23 | # are not checked in 24 | *_override.yml 25 | 26 | 27 | # Crash log files 28 | crash.log 29 | 30 | # macOS OS generated files 31 | .DS_Store 32 | ._* 33 | .Spotlight-V100 34 | .Trashes 35 | 36 | # Windows OS generated files # 37 | ehthumbs.db 38 | Thumbs.db 39 | 40 | # Compressed Archives 41 | # git has built-in compression 42 | # *.7z 43 | # *.dmg 44 | # *.gz 45 | # *.iso 46 | # *.jar 47 | # *.rar 48 | # *.tar 49 | # *.zip 50 | 51 | # Binaries / Compiled source 52 | # *.com 53 | # *.class 54 | # *.dll 55 | # *.exe 56 | # *.o 57 | # *.so 58 | 59 | # Logs and databases 60 | # *.log 61 | # *.sqlite 62 | 63 | # Byte-compiled / optimized / DLL files 64 | __pycache__/ 65 | *.py[cod] 66 | *$py.class 67 | 68 | # VSCode 69 | .vscode 70 | 71 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_bw4hana_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_bw4hana_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-s4hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_bw4hana_sandbox/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_bw4hana_standard_scaleout/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_bw4hana_standard_scaleout/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-s4hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_hana_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_hana_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-s4hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_hana_sandbox/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_ibmdb2_distributed/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_ibmdb2_distributed/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | anydb_primary: 6 | hosts: 7 | sap-anydb-p: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | nwas_ascs: 15 | hosts: 16 | sap-nw-ascs: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | 23 | nwas_pas: 24 | hosts: 25 | sap-nw-pas: 26 | ansible_host: IP_GOES_HERE 27 | ansible_port: 22 28 | ansible_user: root 29 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 30 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 31 | 32 | nwas_aas: 33 | hosts: 34 | sap-nw-aas: 35 | ansible_host: IP_GOES_HERE 36 | ansible_port: 22 37 | ansible_user: root 38 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 39 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 40 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_ibmdb2_distributed/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_ibmdb2_distributed_ha/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_ibmdb2_distributed_ha/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | anydb_primary: 6 | hosts: 7 | sap-anydb-p: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | anydb_secondary: 15 | hosts: 16 | sap-anydb-s: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | 23 | nwas_ascs: 24 | hosts: 25 | sap-nw-ascs: 26 | ansible_host: IP_GOES_HERE 27 | ansible_port: 22 28 | ansible_user: root 29 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 30 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 31 | 32 | nwas_ers: 33 | hosts: 34 | sap-nw-ers: 35 | ansible_host: IP_GOES_HERE 36 | ansible_port: 22 37 | ansible_user: root 38 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 39 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 40 | 41 | nwas_pas: 42 | hosts: 43 | sap-nw-pas: 44 | ansible_host: IP_GOES_HERE 45 | ansible_port: 22 46 | ansible_user: root 47 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 48 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 49 | 50 | nwas_aas: 51 | hosts: 52 | sap-nw-aas: 53 | ansible_host: IP_GOES_HERE 54 | ansible_port: 22 55 | ansible_user: root 56 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 57 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 58 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_ibmdb2_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_ibmdb2_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_ibmdb2_sandbox/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_oracledb_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_oracledb_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_oracledb_sandbox/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_sapase_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_sapase_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_sapase_sandbox/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_sapmaxdb_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_sapmaxdb_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ecc_sapmaxdb_sandbox/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana_ha/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana_ha/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana-p: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | hana_secondary: 15 | hosts: 16 | sap-hana-s: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana_ha/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana_scaleout/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana_scaleout/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | hdb-scaleout0: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | hdb-scaleout1: 14 | ansible_host: IP_GOES_HERE 15 | ansible_port: 22 16 | ansible_user: root 17 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 18 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 19 | hdb-scaleout2: 20 | ansible_host: IP_GOES_HERE 21 | ansible_port: 22 22 | ansible_user: root 23 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 24 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 25 | hdb-scaleout3: 26 | ansible_host: IP_GOES_HERE 27 | ansible_port: 22 28 | ansible_user: root 29 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 30 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 31 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_hana_scaleout/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ides_ecc_hana_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ides_ecc_hana_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-s4hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ides_ecc_ibmdb2_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_ides_ecc_ibmdb2_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_landscape_s4hana_standard/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_landscape_s4hana_standard/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | nwas_ascs: 15 | hosts: 16 | sap-nw-ascs-pas: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_landscape_s4hana_standard_maintplan/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_landscape_s4hana_standard_maintplan/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | nwas_ascs: 15 | hosts: 16 | sap-nw-ascs-pas: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_hana_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_hana_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-nwas-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_ibmdb2_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_ibmdb2_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_oracledb_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_oracledb_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_sapase_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_sapase_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_sapmaxdb_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_abap_sapmaxdb_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_java_ibmdb2_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_java_ibmdb2_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_java_sapase_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_nwas_java_sapase_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | nwas_ascs: 15 | hosts: 16 | sap-nw-ascs: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | 23 | nwas_pas: 24 | hosts: 25 | sap-nw-pas: 26 | ansible_host: IP_GOES_HERE 27 | ansible_port: 22 28 | ansible_user: root 29 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 30 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 31 | 32 | nwas_aas: 33 | hosts: 34 | sap-nw-aas: 35 | ansible_host: IP_GOES_HERE 36 | ansible_port: 22 37 | ansible_user: root 38 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 39 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 40 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed_ha/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed_ha/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana-p: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | hana_secondary: 15 | hosts: 16 | sap-hana-s: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | 23 | nwas_ascs: 24 | hosts: 25 | sap-nw-ascs: 26 | ansible_host: IP_GOES_HERE 27 | ansible_port: 22 28 | ansible_user: root 29 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 30 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 31 | 32 | nwas_ers: 33 | hosts: 34 | sap-nw-ers: 35 | ansible_host: IP_GOES_HERE 36 | ansible_port: 22 37 | ansible_user: root 38 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 39 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 40 | 41 | nwas_pas: 42 | hosts: 43 | sap-nw-pas: 44 | ansible_host: IP_GOES_HERE 45 | ansible_port: 22 46 | ansible_user: root 47 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 48 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 49 | 50 | nwas_aas: 51 | hosts: 52 | sap-nw-aas: 53 | ansible_host: IP_GOES_HERE 54 | ansible_port: 22 55 | ansible_user: root 56 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 57 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 58 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed_ha_maintplan/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed_ha_maintplan/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana-p: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | hana_secondary: 15 | hosts: 16 | sap-hana-s: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | 23 | nwas_ascs: 24 | hosts: 25 | sap-nw-ascs: 26 | ansible_host: IP_GOES_HERE 27 | ansible_port: 22 28 | ansible_user: root 29 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 30 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 31 | 32 | nwas_ers: 33 | hosts: 34 | sap-nw-ers: 35 | ansible_host: IP_GOES_HERE 36 | ansible_port: 22 37 | ansible_user: root 38 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 39 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 40 | 41 | nwas_pas: 42 | hosts: 43 | sap-nw-pas: 44 | ansible_host: IP_GOES_HERE 45 | ansible_port: 22 46 | ansible_user: root 47 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 48 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 49 | 50 | nwas_aas: 51 | hosts: 52 | sap-nw-aas: 53 | ansible_host: IP_GOES_HERE 54 | ansible_port: 22 55 | ansible_user: root 56 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 57 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 58 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed_maintplan/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_distributed_maintplan/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | nwas_ascs: 15 | hosts: 16 | sap-nw-ascs: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | 23 | nwas_pas: 24 | hosts: 25 | sap-nw-pas: 26 | ansible_host: IP_GOES_HERE 27 | ansible_port: 22 28 | ansible_user: root 29 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 30 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 31 | 32 | nwas_aas: 33 | hosts: 34 | sap-nw-aas: 35 | ansible_host: IP_GOES_HERE 36 | ansible_port: 22 37 | ansible_user: root 38 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 39 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 40 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_foundation_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_foundation_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-s4hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_foundation_standard/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_foundation_standard/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | nwas_ascs: 15 | hosts: 16 | sap-nw-ascs-pas: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-s4hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_sandbox/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_sandbox_maintplan/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_sandbox_maintplan/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-s4hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_standard/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_standard/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | nwas_ascs: 15 | hosts: 16 | sap-nw-ascs-pas: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_standard/optional/interactive/databases/anydb_ha.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Interactive prompts - Scenario - AnyDB HA - sapase, sapmaxdb, ibmdb2, oracledb 3 | 4 | # Following variables are defined and validated: 5 | # - sap_swpm_db_host 6 | # - sap_vm_provision_ha_vip_anydb_primary 7 | 8 | 9 | # sap_vm_provision variables 10 | # sap_swpm_db_host is used by sap_vm_provision role for AnyDB HA 11 | - name: Block for sap_swpm_db_host 12 | block: 13 | - name: Prompt for Virtual AnyDB hostname 14 | ansible.builtin.pause: 15 | prompt: | 16 | Enter the virtual hostname for the SAP AnyDB database. 17 | See following SAP Notes for more information: 2279110 and 962955. 18 | Ensure that this does not contain the local hostname. 19 | {% if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 -%} 20 | Press enter to skip and use the default value ('{{ sap_playbook_host_anydb_primary_hostname }}-ha'). 21 | {% endif %} 22 | register: sap_swpm_db_host_register 23 | when: sap_swpm_db_host is not defined 24 | 25 | - name: Set fact for sap_swpm_db_host 26 | ansible.builtin.set_fact: 27 | sap_swpm_db_host: "{{ sap_swpm_db_host_register.user_input 28 | if sap_swpm_db_host_register.user_input | length > 0 29 | else (sap_playbook_host_anydb_primary_hostname ~ '-ha' 30 | if sap_playbook_host_anydb_primary_hostname | d('') | length > 0 else '') }}" 31 | when: sap_swpm_db_host is not defined 32 | 33 | - name: Fail if sap_swpm_db_host is invalid 34 | ansible.builtin.fail: 35 | msg: | 36 | Invalid value for variable 'sap_swpm_db_host': '{{ sap_swpm_db_host }}' 37 | {% if sap_swpm_db_host_register.user_input is not defined -%} 38 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 39 | {% else -%} 40 | Re-run the playbook and provide a valid input. 41 | {% endif %} 42 | when: sap_swpm_db_host | length == 0 43 | 44 | 45 | - name: Block for sap_vm_provision_ha_vip_anydb_primary 46 | block: 47 | - name: Prompt for Virtual IP of AnyDB 48 | ansible.builtin.pause: 49 | prompt: | 50 | Enter the Virtual IP (VIP) for AnyDB Primary server. 51 | Platform specific recommendations: 52 | AWS: the VIP must be **outside** of any VPC Subnet ranges (e.g. 192.168.100.102/32) 53 | GCP: the VIP must be within the VPC Subnetwork range attached to GCP Backend Service for the Internal passthrough Network Load Balancer (e.g. 10.10.10.10/32) 54 | IBM Cloud: the VIP is within the VPC Subnet range and is statically defined by the IBM Cloud Load Balancer [NLB L4 or ALB L7], variable should be commented out 55 | IBM Cloud, Power VS: the VIP must be within the IBM Power Infrastructure VLAN Subnet range (e.g. 192.168.4.4/26) 56 | MS Azure: the VIP must be within the VNet Subnet range attached to the Azure Load Balancer [NLB L4] (e.g. 10.10.10.10/22) 57 | IBM PowerVM: the VIP must be within the VLAN Subnet range 58 | OVirt KVM: the VIP must be within the VLAN Subnet range 59 | KubeVirt: the VIP must be within the VLAN Subnet range 60 | register: sap_vm_provision_ha_vip_anydb_primary_register 61 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 62 | 63 | - name: Set fact for sap_vm_provision_ha_vip_anydb_primary 64 | ansible.builtin.set_fact: 65 | sap_vm_provision_ha_vip_anydb_primary: "{{ sap_vm_provision_ha_vip_anydb_primary_register.user_input }}" 66 | when: sap_vm_provision_ha_vip_anydb_primary is not defined 67 | 68 | - name: Fail if sap_vm_provision_ha_vip_anydb_primary is invalid 69 | ansible.builtin.fail: 70 | msg: | 71 | Invalid value for variable 'sap_vm_provision_ha_vip_anydb_primary': '{{ sap_vm_provision_ha_vip_anydb_primary }}' 72 | {% if sap_vm_provision_ha_vip_anydb_primary_register.user_input is not defined -%} 73 | Correct this variable in extra vars or remove it from extra vars to enable interactive prompt. 74 | {% else -%} 75 | Re-run the playbook and provide a valid input. 76 | {% endif %} 77 | when: 78 | - sap_vm_provision_ha_vip_anydb_primary | length == 0 79 | or sap_vm_provision_ha_vip_anydb_primary == 'ENTER_STRING_VALUE_HERE' 80 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_standard_maintplan/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_s4hana_standard_maintplan/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | hana_primary: 6 | hosts: 7 | sap-hana: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | 14 | nwas_ascs: 15 | hosts: 16 | sap-nw-ascs-pas: 17 | ansible_host: IP_GOES_HERE 18 | ansible_port: 22 19 | ansible_user: root 20 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 21 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 22 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_solman_sapase_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_solman_sapase_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_solman_saphana_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /deploy_scenarios/sap_solman_saphana_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_pas: 6 | hosts: 7 | sap-nwas-anydb: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | -------------------------------------------------------------------------------- /docs/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing guidelines for Ansible Playbooks for SAP 2 | 3 | This document outlines the contribution guidelines for the Ansible Playbooks for SAP. Please read it carefully before submitting any changes. 4 | 5 | ## Guiding principle 6 | All scenarios in `main` branch are self-contained and they should work when copied outside of Ansible Playbooks for SAP. 7 | Example: The playbook `sap_hana_ha` should still work when `sap_hana_ha` folder is copied elsewhere. 8 | 9 | ## Terminology 10 | - **Scenario**, means the SAP Software Solution/Product which runs upon a target Infrastructure Platform using a Deployment Topology (inc. Installation Type). 11 | - **Deployment Topology**, means either a Sandbox, Standard, Distributed or High Availability SAP System design has been implemented using different installation types to one or more hosts. 12 | - **Installation Type**, means a different component of SAP Software has been installed by hdblcm or SAP SWPM with a specific runtime design and layout (e.g. SAP HANA Scale-Up using MDC and TDI-sized storage for OLTP workloads, with High Availability using SAP HANA System Replication in Asynchronous mode). 13 | - **Layout**, refers to the virtual/physical hardware components such as LVM Virtual Groups with striping/mirroring using Block Storage attached to Virtual Machine/s. 14 | 15 | ## Branch Protection 16 | The following branches are present in repository: 17 | - `dev` - Development branch, where we merge from forks. No direct commits, only pull requests from forks. 18 | - `stage` - Stable branch is used for releases that reflects `dev` branch. No direct commits, only pull requests from `dev`. 19 | - `main` - Main default branch, that is created by transformation of `stage` branch. No direct commits or pull requests. 20 | 21 | ## Main branch transformation process 22 | `dev > stage > main` 23 | 24 | 1. Changes are merged to `dev` branch from fork of `dev` using pull request. 25 | 2. Release process is triggered by pull request from `dev` to `stage`. 26 | 3. GitHub action `publish-stage-to-main.yml` will trigger on `stage` changes: 27 | 4. Clone `stage` branch to github action runner. 28 | 5. Copy `common_fragments/tasks` into all `deploy_scenarios` folders. 29 | 6. Combine extra vars fragments in following order (example for AWS): 30 | - `ansible_extravars_aws_ec2_vs_base.yml` 31 | - `common_fragments/vars/platform_vars_aws_ec2_vs.yml` 32 | - `ansible_extravars_aws_ec2_vs_spec.yml` 33 | - `common_fragments/vars/platform_images_aws_ec2_vs.yml` 34 | 7. Append all platform spec and image files to `optional/ansible_extravars_interactive.yml`. 35 | 8. Distribute `optional/ansible_requirements.yml` to all `deploy_scenarios`. 36 | 9. Remove `common_fragments` folder. 37 | 10. Compare current transformed state of `stage` branch against current `main` branch. 38 | 11. Create commit and push to `main` only if changes were detected. 39 | 40 | ### Benefits of the transformation process 41 | - All shared variables can be defined in `common_fragments`. 42 | - All shared tasks can be defined in `common_fragments`. 43 | - Promotes code reuse and reduces redundancy across different scenarios. 44 | - Simplifies maintenance by centralizing common configurations and tasks. 45 | - Ensures consistency in configurations and task execution across various scenarios. 46 | 47 | ## Testing 48 | Before submitting a pull request, please ensure that your changes have been thoroughly tested. 49 | 50 | Testing in `dev` branch requires including all relevant fragments. 51 | 52 | ### Example for scenario on AWS: 53 | ```bash 54 | ansible-playbook ansible_playbook.yml \ 55 | --extra-vars "@./ansible_extravars.yml" \ 56 | --extra-vars "@./ansible_extravars_aws_ec2_vs_base.yml" \ 57 | --extra-vars "@./ansible_extravars_aws_ec2_vs_spec.yml" \ 58 | --extra-vars "@../../common_fragments/vars/platform_vars_aws_ec2_vs.yml" \ 59 | --extra-vars "@../../common_fragments/vars/platform_images_aws_ec2_vs.yml" 60 | ``` 61 | 62 | 63 | ## Code Style and Documentation 64 | Please adhere to the following guidelines: 65 | - Follow Ansible best practices for writing playbooks, roles, and tasks. 66 | - Use clear and descriptive names for variables, tasks, and files. 67 | - Include comments to explain complex logic or non-obvious configurations. 68 | - Document roles, playbooks, and variables in their respective README files. 69 | -------------------------------------------------------------------------------- /docs/CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | # Development contributors 2 | 3 | - **IBM Lab for SAP Solutions** 4 | - IBM Cloud 5 | - **Sean Freeman** - Origin developer of Ansible Playbooks for SAP 6 | - **Red Hat** 7 | - Red Hat for SAP CoP 8 | - **Janine Fuchs** - Developer of iterative improvements from advanced scenarios (e.g. HA), project co-owner 9 | - **SUSE** 10 | - SUSE SAP Emerging Technology Solutions 11 | - **Marcel Mamula** - Developer of iterative improvements from advanced scenarios (e.g. HA), project co-owner 12 | 13 | # New contributors 14 | 15 | This project is consistently seeking new contributors for different SAP Solution Scenarios that are not covered. 16 | -------------------------------------------------------------------------------- /docs/DEV_EXECUTION_FLOW.md: -------------------------------------------------------------------------------- 1 | # Execution workflow structure 2 | 3 | Each Ansible Playbook for SAP is for end-to-end deployment of an SAP Software solution scenario to an Infrastructure Platform. 4 | 5 | The Infrastructure-as-Code (IaC) provisioning activities, optionally can use Ansible or Terraform: 6 | - When provisioning hosts using Ansible, the infrastructure platform must already be setup. 7 | - When provisioning hosts using Ansible calling Terraform, a Minimal Landing Zone and the hosts will be provisioned. 8 | - Alternatively both can be skipped, and the Ansible Playbook use existing hosts. 9 | 10 | Segregation of definitions for the Infrastructure and SAP Software follows this delineation: 11 | - Ansible Dictionary to define the Host Specification templates (i.e. CPU, RAM, Storage etc). This is statically defined in the Ansible Extravars file, for example `sap_vm_provision_aws_ec2_vs_host_specifications_dictionary` and for Cloud Hyperscaler's also `sap_vm_provision_aws_ec2_vs_host_os_image_dictionary`. Default sizes for Extra Small SAP Systems are provided. 12 | - Ansible Dictionary to define the SAP Software installation / SAP System templates. This is statically defined in the Ansible Extravars file, for example `sap_swpm_templates_install_dictionary` and other `sap_`prefix Ansible Variables. 13 | 14 | Within each Ansible Playbook, there are various Ansible Tasks for handling the infrastructure/hosts. Afterwards, the referenced Ansible Collection Role/s for configuration of OS and installation of SAP software is identical for each Infrastructure Platform. 15 | 16 |
17 | 18 | **Execution of this modular and nested structure used in these end-to-end deployment Ansible Playbooks for SAP, is shown in the example below:** 19 | 20 | **Ansible Playbook for SAP solution scenario `ansible_playbook.yml`:** 21 | - Non-Interactive (Standard) 22 | - Include multiple Ansible Extravars file 23 | - OPTIONAL: Include Ansible Inventory, skip all provisioning and use existing hosts 24 | - Interactive 25 | - Prompt IAC Provisioning choice (Ansible, Ansible to Terraform, Existing Hosts) 26 | - Prompt Infrastructure Platform choice 27 | - Execute Ansible Role `sap_vm_provision` from the Ansible Collection `sap_infrastructure` 28 | - Execute Ansible Tasks for the chosen Infrastructure Platform; call Infrastructure Platform APIs 29 | - If Ansible, loop for VM and storage provisioning per definition in the `*_host_specifications_dictionary` for the chosen Infrastructure Platform and use existing network and bastion setup 30 | - If Ansible to Terraform, execute Terraform Modules for SAP to bootstrap minimal landing zone (e.g. Networking, DNS, SSH Key), then loop for VM and storage provisioning per definition in the `*_host_specifications_dictionary` for the chosen Infrastructure Platform 31 | - Critical OS tasks for VM, such as enable Root OS Login 32 | - Execute various Ansible Roles from the Ansible Collection `sap_install` 33 | - Within each Ansible Role, execute Ansible Tasks for RHEL/SLES OS pre-configuration for SAP, SAP HANA install, SAP SWPM installs etc. 34 | - Ansible Tasks using built-in Ansible Modules, e.g. built-in for POSIX Shell: 35 | - OS CLI/binaries 36 | - Vendor CLI/binaries (i.e. SAP Software CLI/binaries) 37 | - Ansible Tasks using customized Ansible Modules: 38 | - Shell scripts --> OS and Vendor CLI/binaries 39 | - Python scripts 40 | -------------------------------------------------------------------------------- /docs/GET_STARTED_AZURE_DEVOPS.md: -------------------------------------------------------------------------------- 1 | # Getting Started - Azure DevOps Pipelines 2 | 3 | The following guidance describes how to execute an Ansible Playbook from Azure DevOps Service Pipelines: 4 | 5 | 1. Log in to Microsoft Azure 6 | 2. Open [Azure DevOps Services AEX Portal](https://aex.dev.azure.com). Create an Azure DevOps Organization (e.g. `dev.azure.com/username0111`) and select where the 'Projects' host location will be (e.g. `Europe`) 7 | 3. This will automatically open the Azure DevOps Organization URL (e.g. `https://dev.azure.com/username0111`) 8 | 4. Within the Azure DevOps Organization, create a new Project with a visibility 'Private' and provide a name (e.g. `project1`) 9 | 5. Unfortunately while "MS Hosted CI/CD" Free Tier provides 1800 minutes, the error `"No hosted parallelism has been purchased or granted"` will persistently be shown for all Pipeline Jobs (given every job is Queued in Parallel, even if only 1 job or all jobs are sequential). Open the 'Project Settings' at the bottom of the navigation menu, click 'Billing' (i.e. `https://dev.azure.com/username0111/project1/_settings/buildqueue`), then click 'Set up billing' to link the Azure DevOps Service to the Azure Subscription. 10 | 6. Once the link is completed, change the 'Paid parallel jobs' to `1`. This will remove the Free Tier minutes allowance but allow all Pipeline Jobs to function. Scroll down and click 'Save'. After this change, any Pipeline Job will now show "Agent: Hosted Agent" under "Pool: Azure Pipelines" 11 | 7. Open the 'Project Settings' again, under the Pipelines section click on 'Service connections'. From the list select 'Azure Resource Manager', then select 'Service Principal (automatic)' followed by scope level as 'Subscription' (optionally selecting a specific Resource Group intended for VM deployments) and enabling 'Grant access permission to all pipelines'. Then click 'Save' 12 | 8. Hover over 'Repos' in the navigation menu, then click 'Files'. Click 'Import a repository', use Clone URL `https://github.com/sap-linuxlab/ansible.playbooks_for_sap.git` and then 'Import'. This will clone the entire code repository and show the file structure and README (which may not be formatted correctly, as Azure DevOps Service does not use GFM Markdown). Any edits in this repository are private, and are not synchronised to the GitHub origin. 13 | - By default the name will be the same as the Project, to alter the Repo name then open the 'Project Settings' at the bottom of the navigation menu. Scroll down on the settings to Repositories (i.e. `https://dev.azure.com/username0111/project1/_settings/repositories`) 14 | 9. At the top of repository page, a downwards arrow will show the `main` branch as the 'Default branch' in Azure DevOps (which tracks the latest release version). Click this to choose 'Tags' to select a specific release version of the Ansible Playbooks for SAP. To change the default, use the 'Repos / Branches' page 15 | 10. Hover over 'Pipelines' in the navigation menu, then click 'Pipelines' followed by 'New pipeline'. Then select the 'Azure Repos Git' and choose the repository (e.g. `project1`) that was imported. The prompt 'Configure your pipeline' will appear, choose 'Existing Azure Pipelines YAML file' and use the Path drop-down menu to select the `/docs/sample/azure_devops_pipeline_ansible.yml`. Click Continue, then Save. 16 | 11. Once saved, click Pipelines and then 'Library', click 'Secure files' and then add the SSH Key files (Hosts Private/Public and Bastion Private). 17 | 12. After this, return to the Pipelines page and click Run, then enter the Parameters, and click Run again. 18 | 19 | _N.B. During download of installation media, the Ansible Task appears to hang but the files are being downloaded. Azure DevOps Pipelines do not output the status (e.g. loop item downloaded successfully) until the Ansible Task has fully completed, it is especially apparent during the download but the same applies to all Ansible Tasks during the Ansible Playbook execution_ 20 | 21 | > Optional: In the top right corner, click the 'Marketplace' then use 'Browse marketplace' to install the Extension for Ansible by Microsoft (i.e. `https://marketplace.visualstudio.com/items?itemName=ms-vscs-rm.vss-services-ansible`) to the Azure DevOps Organization 22 | -------------------------------------------------------------------------------- /special_actions/sap_download_install_media/README.md: -------------------------------------------------------------------------------- 1 | # Ansible Playbook - Download SAP Installation Media 2 | 3 | The structure of this Ansible Playbook differs from all `deploy_scenarios` in this repository: 4 | - Designed only for targeting existing hosts 5 | 6 | This Ansible Playbook can be executed with: 7 | - Existing hosts 8 | 9 | --- 10 | 11 | ## Execution of Ansible Playbook 12 | 13 | This Ansible Playbook can only be executed against existing hosts. Upon execution, Interactive Prompts will request for SAP User ID credentials and the user must select from a pre-defined options list of different SAP Software Installation Media. 14 | 15 | ```shell 16 | ansible-galaxy collection install --requirements-file ./ansible_requirements.yml 17 | 18 | TARGET_HOST_IP="" 19 | TARGET_HOSTS_SSH_KEY_FILE="/FULL/PATH/HERE/hosts_rsa" 20 | 21 | ansible-playbook ./ansible_playbook.yml \ 22 | --inventory "$TARGET_HOST_IP," \ 23 | --extra-vars "@ansible_extravars.yml" \ 24 | --connection 'ssh' \ 25 | --user root \ 26 | --private-key "$TARGET_HOSTS_SSH_KEY_FILE" \ 27 | --ssh-extra-args="-o ControlMaster=auto -o ControlPersist=1800s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no" 28 | ``` 29 | -------------------------------------------------------------------------------- /special_actions/sap_download_install_media/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | # - name: community.general 7 | - name: community.sap_launchpad 8 | type: galaxy 9 | version: 1.2.0 10 | 11 | # Collections from public repositories via HTTPS 12 | # - name: https://github.com/sap-linuxlab/community.sap_launchpad.git 13 | # type: git 14 | # version: main 15 | 16 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 17 | # Used for customised/forked Ansible Collections 18 | # - name: git@github.domain.com:gheorg/namespace.sap_launchpad.git 19 | # type: git 20 | # version: main 21 | -------------------------------------------------------------------------------- /special_actions/sap_download_install_media/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | ungrouped: 4 | hosts: 5 | host1: 6 | ansible_host: IP_GOES_HERE 7 | ansible_port: 22 8 | ansible_user: root 9 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 10 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 11 | -------------------------------------------------------------------------------- /special_actions/sap_sda/README.md: -------------------------------------------------------------------------------- 1 | # Ansible Playbook - SAP SolMan Diagnostics Agent (SDA) installation 2 | 3 | The structure of this Ansible Playbook differs from all `deploy_scenarios` in this repository: 4 | - Designed only for targeting existing hosts 5 | - Requires existing SAP System host details and credentials 6 | 7 | This Ansible Playbook can be executed with: 8 | - Existing hosts 9 | 10 | This Ansible Playbook is `EXPERIMENTAL`. This is designed to be executed to a single target host for a basic SDA installation, further testing (and a separate Ansible Playbook) would be required for SDA installation to many hosts. 11 | 12 | --- 13 | 14 | ## Execution of Ansible Playbook 15 | 16 | This Ansible Playbook can only be executed against existing hosts. Upon execution, Interactive Prompts will request additional details, the user must select from the pre-defined options in the prompt. 17 | 18 | ```shell 19 | ansible-galaxy collection install --requirements-file ./ansible_requirements.yml 20 | 21 | TARGET_HOST_IP="" 22 | TARGET_HOSTS_SSH_KEY_FILE="/FULL/PATH/HERE/hosts_rsa" 23 | 24 | ansible-playbook ./ansible_playbook.yml \ 25 | --inventory "$TARGET_HOST_IP," \ 26 | --extra-vars "@ansible_extravars.yml" \ 27 | --connection 'ssh' \ 28 | --user root \ 29 | --private-key "$TARGET_HOSTS_SSH_KEY_FILE" \ 30 | --ssh-extra-args="-o ControlMaster=auto -o ControlPersist=1800s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no" 31 | ``` 32 | -------------------------------------------------------------------------------- /special_actions/sap_sda/ansible_extravars.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # SAP Note 2253383 - Diagnostics Agent - SWPM Archive-Based Installation 3 | # SAP Note 1858920 - Diagnostics Agent installation with Software Provisioning Manager 4 | 5 | # SAP Diagnostics Agent 7.53, OS Independent (SUPPORT PACKAGES AND PATCHES) 6 | # https://me.sap.com/softwarecenter/template/products/EVENT=TREE&NE=NAVIGATE&ENR=AINS0120061532490001174401200615320900006067&V=MAINT&TA=ACTUAL 7 | 8 | # SAP JVM 8.1 (SUPPORT PACKAGES AND PATCHES) 9 | # https://me.sap.com/softwarecenter/template/products/EVENT=TREE&NE=NAVIGATE&ENR=73554900100200000247&V=MAINT 10 | 11 | # SAP JVM 6.1 (SUPPORT PACKAGES AND PATCHES) 12 | # https://me.sap.com/softwarecenter/template/products/EVENT=TREE&NE=NAVIGATE&ENR=01200615320200012982&V=MAINT 13 | 14 | # SAP Kernel 7.54 64-BIT, UNICODE, DATABASE INDEPENDENT (SUPPORT PACKAGES AND PATCHES) 15 | # https://me.sap.com/softwarecenter/template/products/EVENT=TREE&NE=NAVIGATE&ENR=73554900100200019168&V=MAINT 16 | 17 | 18 | # The following variables can be defined to skip prompts: 19 | 20 | # Enter SAP S-User ID (String). 21 | # sap_id_user: 22 | 23 | # Enter SAP S-User Password (String). 24 | # sap_id_user_password: 25 | 26 | # Enter key from sap_software_install_dictionary as String 27 | # sap_software_product: sap_diag_agent_753_for_solman72_sp12 28 | 29 | # Enter download directory path on target host (String). 30 | # sap_install_media_detect_source_directory: /software 31 | 32 | # Enter SAP SAP System ID (String). 33 | # sap_sda_system_id: DAA 34 | 35 | # Enter SAP SAP System Instance Number (String). 36 | # sap_sda_instance_nr: 98 37 | 38 | # Enter the password for the sidadm user (String). 39 | # sap_sda_adm_password: '' 40 | 41 | # Enter Virtual Host Name (short) of the target SAP System (String). 42 | # sap_sda_virtual_hostname: '' 43 | 44 | 45 | sap_software_install_dictionary: 46 | 47 | sap_diag_agent_753_for_solman72_sp12: 48 | 49 | softwarecenter_search_list_x86_64: 50 | - 'SAPCAR_1115-70006178.EXE' 51 | - 'SWPM10SP43_2-20009701.SAR' 52 | - 'SAPHOSTAGENT61_61-80004822.SAR' # SAP Host Agent 7.22 Linux x86_64 53 | - 'SMDA720_SP14_23-80003641.SAR' # SAP Diagnostics Agent 7.53, OS Independent, for SAP SolMan 7.2 SP12 54 | - 'SAPJVM8_96-80000202.SAR' # SAP JVM 8.1 55 | - 'SAPEXE_1100-80002573.SAR' # Kernel Part I (753) 56 | - 'SAPEXEDB_1100-80002572.SAR' # Kernel Part II (753), SAP HANA 57 | 58 | softwarecenter_search_list_ppc64le: 59 | - 'SAPCAR_1115-70006238.EXE' 60 | - 'SWPM10SP43_2-70002492.SAR' 61 | - 'SAPHOSTAGENT61_61-80004831.SAR' # SAP Host Agent 7.22 Linux x86_64 62 | - 'SMDA720_SP14_23-80003641.SAR' # SAP Diagnostics Agent 7.53, OS Independent, for SAP SolMan 7.2 SP12 63 | - 'SAPJVM8_96-70001621.SAR' # SAP JVM 8.1 64 | - 'SAPEXE_1100-80002630.SAR' # Kernel Part I (753) 65 | - 'SAPEXEDB_1100-80002629.SAR' # Kernel Part II (753), SAP HANA 66 | 67 | 68 | sap_diag_agent_753_for_solman72_sp0_sp11: 69 | 70 | softwarecenter_search_list_x86_64: 71 | - 'SAPCAR_1115-70006178.EXE' 72 | - 'SWPM10SP43_2-20009701.SAR' 73 | - 'SAPHOSTAGENT61_61-80004822.SAR' # SAP Host Agent 7.22 Linux x86_64 74 | - 'SMDA720_SP11_22-80003641.SAR' # SAP Diagnostics Agent 7.53, OS Independent, for SAP SolMan >= 7.2 SP0 and <= 7.2 SP11 75 | - 'SAPJVM8_96-80000202.SAR' # SAP JVM 8.1 76 | - 'SAPEXE_1100-80002573.SAR' # Kernel Part I (753) 77 | - 'SAPEXEDB_1100-80002572.SAR' # Kernel Part II (753), SAP HANA 78 | 79 | softwarecenter_search_list_ppc64le: 80 | - 'SAPCAR_1115-70006238.EXE' 81 | - 'SWPM10SP43_2-70002492.SAR' 82 | - 'SAPHOSTAGENT61_61-80004831.SAR' # SAP Host Agent 7.22 Linux x86_64 83 | - 'SMDA720_SP11_22-80003641.SAR' # SAP Diagnostics Agent 7.53, OS Independent, for SAP SolMan >= 7.2 SP0 and <= 7.2 SP11 84 | - 'SAPJVM8_96-70001621.SAR' # SAP JVM 8.1 85 | - 'SAPEXE_1100-80002630.SAR' # Kernel Part I (753) 86 | - 'SAPEXEDB_1100-80002629.SAR' # Kernel Part II (753), SAP HANA 87 | -------------------------------------------------------------------------------- /special_actions/sap_sda/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | # - name: community.general 7 | - name: community.sap_install 8 | type: galaxy 9 | version: 1.5.3 10 | - name: community.sap_launchpad 11 | type: galaxy 12 | version: 1.2.0 13 | 14 | # Collections from public repositories via HTTPS 15 | # - name: https://github.com/sap-linuxlab/community.sap_launchpad.git 16 | # type: git 17 | # version: main 18 | 19 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 20 | # Used for customised/forked Ansible Collections 21 | # - name: git@github.domain.com:gheorg/namespace.sap_launchpad.git 22 | # type: git 23 | # version: main 24 | -------------------------------------------------------------------------------- /special_actions/sap_sda/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | ungrouped: 4 | hosts: 5 | host1: 6 | ansible_host: IP_GOES_HERE 7 | ansible_port: 22 8 | ansible_user: root 9 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 10 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 11 | -------------------------------------------------------------------------------- /special_actions/sap_system_copy_export/README.md: -------------------------------------------------------------------------------- 1 | # Ansible Playbook - SAP System Copy EXPORT 2 | 3 | The structure of this Ansible Playbook differs from all `deploy_scenarios` in this repository: 4 | - Designed only for targeting existing hosts 5 | 6 | This Ansible Playbook can be executed with: 7 | - Existing hosts 8 | 9 | This Ansible Playbook is `EXPERIMENTAL` and only includes code for source system SAP System Export of SAP ECC EhP8 using IBM Db2. 10 | 11 | --- 12 | 13 | ## Execution of Ansible Playbook 14 | 15 | This Ansible Playbook can only be executed against existing hosts. Upon execution, Interactive Prompts will request additional details, the user must select from the pre-defined options in the prompt. 16 | 17 | ```shell 18 | ansible-galaxy collection install --requirements-file ./ansible_requirements.yml 19 | 20 | TARGET_HOST_IP="" 21 | TARGET_HOSTS_SSH_KEY_FILE="/FULL/PATH/HERE/hosts_rsa" 22 | 23 | ansible-playbook ./ansible_playbook.yml \ 24 | --inventory "$TARGET_HOST_IP," \ 25 | --extra-vars "@ansible_extravars.yml" \ 26 | --connection 'ssh' \ 27 | --user root \ 28 | --private-key "$TARGET_HOSTS_SSH_KEY_FILE" \ 29 | --ssh-extra-args="-o ControlMaster=auto -o ControlPersist=1800s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no" 30 | ``` 31 | -------------------------------------------------------------------------------- /special_actions/sap_system_copy_export/ansible_extravars.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | #### 4 | # Mandatory parameters : Ansible Dictionary for lookup of pretty name to SAP SWPM database reference codes 5 | #### 6 | 7 | sap_db_ref_code_dictionary: 8 | saphana: HDB 9 | sapase: SYB 10 | sapmaxdb: ADA 11 | ibmdb2: DB6 12 | oracledb: ORA 13 | 14 | 15 | #### 16 | # Mandatory parameters : Ansible Dictionary for SAP SWPM installation using Default Templates mode of the Ansible Role 17 | #### 18 | 19 | sap_swpm_ansible_role_mode: advanced_templates 20 | 21 | # Templates and default values 22 | sap_swpm_templates_install_dictionary: 23 | 24 | # SAP Business Suite 7i 2016 > EHP8 for SAP ERP 6.0 ABAP > IBM Db2 for Linux, UNIX, and Windows > System Copy > Source System > Based on AS ABAP > Database Instance Export 25 | sap_ecc6_ehp8_anydb_ibmdb2_distributed_syscopy_export: 26 | 27 | sap_swpm_product_catalog_id: NW_Export:BS2016.ERP608.DB6.CP 28 | 29 | sap_swpm_inifile_custom_values_dictionary: 30 | NW_ABAP_Export_Dialog.migmonJobNum: 3 31 | NW_ABAP_Export_Dialog.migmonLoadArgs: -stop_on_error 32 | NW_ABAP_Export_Dialog.parallelR3szchkExecution: "true" 33 | NW_ABAP_Export_Dialog.r3szchkDetermineSizeValue: DB 34 | NW_ABAP_Export_Dialog.repeatExport: COMPLETE 35 | NW_ABAP_Export_Dialog.splitPackageLimitVal: 5000 36 | NW_ABAP_Export_Dialog.targetDbType: "{{ sap_db_ref_code_dictionary[sap_export_db_type_target] }}" 37 | NW_ABAP_Export_Dialog.targetHardwarePlatform: LITTLE_ENDIAN 38 | NW_ABAP_Export_Dialog.useSqlFiles: NOSQL 39 | NW_ABAP_Export_Dialog.useUnsortedUnload: "true" 40 | NW_Export.mainExportDir: "{{ sap_export_directory }}" 41 | NW_Export.stopRunningSystem: "false" 42 | NW_Export.accessLevel4ExportDir: DEFAULT 43 | NW_Export.choiceSepKernel: "false" 44 | NW_readProfileDir.profileDir: "{{ sap_export_profile_path }}" 45 | NW_getLoadType.importManuallyExecuted: false 46 | NW_getLoadType.loadType: STD 47 | NW_DB6_DB.db6.abap.connect.user: "{{ sap_export_db_connect_user }}" 48 | NW_DB6_DB.db6.abap.schema: "{{ sap_export_db_schema_abap }}" 49 | -------------------------------------------------------------------------------- /special_actions/sap_system_copy_export/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | # - name: community.general 7 | - name: community.sap_install 8 | type: galaxy 9 | version: 1.5.3 10 | 11 | # Collections from public repositories via HTTPS 12 | # - name: https://github.com/sap-linuxlab/community.sap_launchpad.git 13 | # type: git 14 | # version: main 15 | 16 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 17 | # Used for customised/forked Ansible Collections 18 | # - name: git@github.domain.com:gheorg/namespace.sap_launchpad.git 19 | # type: git 20 | # version: main 21 | -------------------------------------------------------------------------------- /special_actions/sap_system_copy_export/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | ungrouped: 4 | hosts: 5 | host1: 6 | ansible_host: IP_GOES_HERE 7 | ansible_port: 22 8 | ansible_user: root 9 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 10 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 11 | -------------------------------------------------------------------------------- /special_actions/sap_system_copy_restore_hana_sandbox/README.md: -------------------------------------------------------------------------------- 1 | # Ansible Playbook - SAP System Copy Restore from SAP HANA Complete Data Backup 2 | 3 | The structure of this Ansible Playbook differs from all `deploy_scenarios` in this repository: 4 | - Designed only for targeting existing hosts 5 | 6 | This Ansible Playbook can be executed with: 7 | - Existing hosts 8 | 9 | This Ansible Playbook is `EXPERIMENTAL` and is exclusively for performing a System Copy Restore as a Sandbox SAP System Sandbox (i.e. all SAP HANA and SAP NetWeaver instances run on a single host), using an SAP HANA Complete Data Backup file which contains the SAP ECC on HANA or SAP S/4HANA System. 10 | 11 | --- 12 | 13 | ## Execution of Ansible Playbook 14 | 15 | This Ansible Playbook can only be executed against existing hosts. Upon execution, Interactive Prompts will request additional details, the user must select from the pre-defined options in the prompt. 16 | 17 | ```shell 18 | ansible-galaxy collection install --requirements-file ./ansible_requirements.yml 19 | 20 | TARGET_HOST_IP="" 21 | TARGET_HOSTS_SSH_KEY_FILE="/FULL/PATH/HERE/hosts_rsa" 22 | 23 | ansible-playbook ./ansible_playbook.yml \ 24 | --inventory "$TARGET_HOST_IP," \ 25 | --extra-vars "@ansible_extravars.yml" \ 26 | --connection 'ssh' \ 27 | --user root \ 28 | --private-key "$TARGET_HOSTS_SSH_KEY_FILE" \ 29 | --ssh-extra-args="-o ControlMaster=auto -o ControlPersist=1800s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no" 30 | ``` 31 | -------------------------------------------------------------------------------- /special_actions/sap_system_copy_restore_hana_sandbox/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | # - name: community.general 7 | - name: community.sap_install 8 | type: galaxy 9 | version: 1.5.3 10 | 11 | # Collections from public repositories via HTTPS 12 | # - name: https://github.com/sap-linuxlab/community.sap_launchpad.git 13 | # type: git 14 | # version: main 15 | 16 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 17 | # Used for customised/forked Ansible Collections 18 | # - name: git@github.domain.com:gheorg/namespace.sap_launchpad.git 19 | # type: git 20 | # version: main 21 | -------------------------------------------------------------------------------- /special_actions/sap_system_copy_restore_hana_sandbox/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | ungrouped: 4 | hosts: 5 | host1: 6 | ansible_host: IP_GOES_HERE 7 | ansible_port: 22 8 | ansible_user: root 9 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 10 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 11 | -------------------------------------------------------------------------------- /special_actions/sap_webdispatcher_standalone/ansible_extravars_vmware_vm.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # EXPERIMENTAL 3 | 4 | #### Scenario specific infrastructure platform variables #### 5 | 6 | 7 | #### Bastion server details #### 8 | # Bastion variables are used when sap_vm_provision_bastion_execution is set to `true` 9 | sap_vm_provision_bastion_user: "ENTER_STRING_VALUE_HERE" # Bastion user name (String). 10 | sap_vm_provision_bastion_ssh_port: "ENTER_STRING_VALUE_HERE" # Bastion user password (String). 11 | 12 | # Variables required for sap_vm_provision_iac_type=ansible 13 | sap_vm_provision_bastion_public_ip: "ENTER_STRING_VALUE_HERE" # Public IP of the bastion server (String). 14 | sap_vm_provision_ssh_bastion_private_key_file_path: "ENTER_STRING_VALUE_HERE" # Path to bastion server's SSH private key on the execution node (String). 15 | sap_vm_provision_ssh_host_private_key_file_path: "ENTER_STRING_VALUE_HERE" # Path to target host's SSH private key on the execution node (String). 16 | sap_vm_provision_ssh_host_public_key_file_path: "ENTER_STRING_VALUE_HERE" # Path to bastion public host key on execution node (String). 17 | 18 | #### Infrastructure platform variables #### 19 | sap_vm_provision_iac_platform: "vmware_vm" # Name of the provisioning platform (String). 20 | sap_vm_provision_vmware_vcenter_hostname: "" # VCenter hostname (String). 21 | sap_vm_provision_vmware_vcenter_validate_certs_bool: false # Validate certificates (Boolean). 22 | sap_vm_provision_vmware_vcenter_user: "" # VCenter user name (String). 23 | sap_vm_provision_vmware_vcenter_password: "" # VCenter user password (String). 24 | 25 | sap_vm_provision_vmware_vm_folder_name: "" # VM Folder name (String). 26 | sap_vm_provision_vmware_vm_cluster_name: "" # VM Cluster name (String). 27 | sap_vm_provision_vmware_vm_cluster_host_name: "" # VM Cluster host name (String). 28 | sap_vm_provision_vmware_vm_cluster_datastore_name: "" # VM Cluster datastore name (String). 29 | 30 | sap_vm_provision_vmware_vm_content_library_name: "" # VM Content library name (String). 31 | sap_vm_provision_vmware_vm_template_name: "" # VM template name (String). 32 | 33 | # Variables required for sap_vm_provision_iac_type=ansible_to_terraform 34 | # sap_vm_provision_terraform_state: "ENTER_STRING_VALUE_HERE" # present, absent 35 | # sap_vm_provision_resource_prefix: "ENTER_STRING_VALUE_HERE" 36 | # sap_vm_provision_bastion_os_image: "ENTER_STRING_VALUE_HERE" 37 | # sap_vm_provision_terraform_work_dir_path: "/tmp/tf1" 38 | 39 | 40 | #### Mandatory parameters : Ansible Dictionary for host specifications #### 41 | sap_vm_provision_vmware_vm_host_specifications_dictionary: 42 | 43 | xsmall_256gb: 44 | 45 | webdisp01: # Hostname, must be 13 characters or less 46 | 47 | sap_host_type: nwas_aas # hana_primary, hana_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 48 | 49 | # SMT-2 (i.e. 2 CPU Threads per CPU Core) is default for Intel CPU Hyper-Threading, optionally can be altered to SMT-1 50 | vmware_vm_cpu_smt: 2 51 | vmware_vm_cpu_threads: 8 52 | vmware_vm_memory_gib: 64 53 | 54 | sap_storage_setup_sid: "W{{ sap_system_wd_instance_nr }}" # SID created automatically as W 55 | 56 | # hana_primary, hana_secondary, nwas_abap_ascs, nwas_abap_ers, nwas_abap_pas, nwas_abap_aas, nwas_java_scs, nwas_java_ers 57 | sap_storage_setup_host_type: 58 | - all # workaround for generic NWAS instance setup via SAP SWPM 59 | 60 | storage_definition: 61 | 62 | - name: usr_sap 63 | mountpoint: /usr/sap 64 | disk_size: 128 # size in GB, integer 65 | disk_type: scsi # VMware Virtual Disk Node (scsi, ide, sata) 66 | filesystem_type: xfs # default: xfs 67 | 68 | - name: sapmnt 69 | mountpoint: /sapmnt 70 | disk_size: 80 # size in GB, integer 71 | disk_type: scsi # VMware Virtual Disk Node (scsi, ide, sata) 72 | filesystem_type: xfs # default: xfs 73 | 74 | - name: software 75 | mountpoint: /software 76 | disk_size: 128 # size in GB, integer 77 | disk_type: scsi # VMware Virtual Disk Node (scsi, ide, sata) 78 | filesystem_type: xfs # default: xfs 79 | -------------------------------------------------------------------------------- /special_actions/sap_webdispatcher_standalone/ansible_requirements.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | collections: 4 | 5 | # Collections from Ansible Galaxy 6 | - name: community.general 7 | type: galaxy 8 | version: 10.1.0 9 | - name: fedora.linux_system_roles 10 | type: galaxy 11 | version: 1.100.0 12 | - name: community.sap_install 13 | type: galaxy 14 | version: 1.5.3 15 | - name: community.sap_launchpad 16 | type: galaxy 17 | version: 1.2.0 18 | - name: community.sap_infrastructure 19 | type: galaxy 20 | version: 1.1.2 21 | # - name: community.sap_operations 22 | # type: galaxy 23 | # version: 0.9.1 24 | 25 | # Collections for Infrastructure from Ansible Galaxy 26 | - name: cloud.terraform 27 | type: galaxy 28 | version: 3.0.0 29 | - name: amazon.aws 30 | type: galaxy 31 | version: 9.0.0 32 | - name: community.aws 33 | type: galaxy 34 | version: 9.0.0 35 | - name: azure.azcollection 36 | type: galaxy 37 | version: 3.2.0 38 | - name: google.cloud 39 | type: galaxy 40 | version: 1.5.0 41 | # Replace with ibm.cloud in future, legacy Ansible Collection uses hidden on-the-fly Terraform files in /var/tmp/ansible/ibmcloud) 42 | - name: ibm.cloudcollection 43 | type: galaxy 44 | version: 1.71.2 45 | - name: ovirt.ovirt 46 | type: galaxy 47 | version: 3.2.0 48 | - name: openstack.cloud 49 | type: galaxy 50 | version: 2.4.0 51 | - name: vmware.vmware_rest 52 | type: galaxy 53 | version: 4.5.0 54 | - name: cloud.common 55 | type: galaxy 56 | version: 4.0.0 57 | 58 | # Collections from public repositories via HTTPS 59 | # - name: https://github.com/sap-linuxlab/community.sap_install.git 60 | # type: git 61 | # version: dev 62 | 63 | # Collections from private repositories via use SSH (embedded GitHub PAT does not work) 64 | # Used for customised/forked Ansible Collections 65 | # - name: git@github.domain.com:gheorg/namespace.sap_install.git 66 | # type: git 67 | # version: main 68 | -------------------------------------------------------------------------------- /special_actions/sap_webdispatcher_standalone/optional/ansible_extravars_existing_hosts.yml: -------------------------------------------------------------------------------- 1 | --- 2 | #### Instructions for using existing_hosts #### 3 | # When existing_hosts are used, execution of provisioning role sap_vm_provision will be skipped. 4 | # This results in the need to define additional variables below, e.g. sap_general_preconfigure_domain. 5 | # Role sap_storage_setup will be searching for block devices based on their definition in storage_definition 6 | # under sap_vm_provision_existing_hosts_host_specifications_dictionary. These devices must not be partitioned! 7 | 8 | 9 | # Infrastructure provisioning definitions 10 | sap_vm_provision_iac_type: "existing_hosts" 11 | sap_vm_provision_iac_platform: "existing_hosts" 12 | 13 | sap_general_preconfigure_modify_etc_hosts: true 14 | sap_general_preconfigure_domain: "{{ ansible_domain }}" 15 | 16 | 17 | # sap_storage role variable assignment per host 18 | sap_storage_setup_definition: 19 | "{{ sap_vm_provision_existing_hosts_host_specifications_dictionary[sap_vm_provision_host_specification_plan] 20 | [inventory_hostname_short].storage_definition }}" 21 | 22 | 23 | #### Ansible Dictionary for host specifications #### 24 | sap_vm_provision_existing_hosts_host_specifications_dictionary: 25 | 26 | xsmall_256gb: 27 | 28 | webdisp01: # Hostname, must be 13 characters or less 29 | sap_host_type: nwas_aas # hana_primary, hana_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 30 | 31 | sap_storage_setup_sid: "W{{ sap_system_wd_instance_nr }}" # SID created automatically as W 32 | 33 | # hana_primary, hana_secondary, nwas_abap_ascs, nwas_abap_ers, nwas_abap_pas, nwas_abap_aas, nwas_java_scs, nwas_java_ers 34 | sap_storage_setup_host_type: 35 | - all # workaround for generic NWAS instance setup via SAP SWPM 36 | 37 | storage_definition: 38 | 39 | - name: usr_sap 40 | mountpoint: /usr/sap 41 | disk_size: 256 # size in GB, integer 42 | filesystem_type: xfs # default: xfs 43 | 44 | - name: sapmnt 45 | mountpoint: /sapmnt 46 | disk_size: 80 # size in GB, integer 47 | filesystem_type: xfs # default: xfs 48 | 49 | - name: software 50 | mountpoint: /software 51 | disk_size: 100 # size in GB, integer 52 | filesystem_type: xfs # default: xfs 53 | -------------------------------------------------------------------------------- /special_actions/sap_webdispatcher_standalone/optional/ansible_inventory_noninteractive.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # Ansible Inventory Group names must match sap_host_type variable - hana_primary, hana_secondary, anydb_primary, anydb_secondary, nwas_ascs, nwas_ers, nwas_pas, nwas_aas 4 | 5 | nwas_aas: 6 | hosts: 7 | sap-webdisp: 8 | ansible_host: IP_GOES_HERE 9 | ansible_port: 22 10 | ansible_user: root 11 | ansible_ssh_private_key_file: "{{ playbook_dir }}/ssh/hosts_rsa" 12 | ansible_ssh_common_args: -o ConnectTimeout=180 -o ControlMaster=auto -o ControlPersist=3600s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ForwardX11=no -o ProxyCommand='ssh -W %h:%p bastionuser@IP_GOES_HERE -p 50222 -i {{ playbook_dir }}/ssh/bastion_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' 13 | --------------------------------------------------------------------------------