Skip to Content
Technical Articles

Automating your SAP HANA and S/4HANA by SAP deployments using Ansible – Part 4

The goal for this blog post series is to show how we can make SAP Solutions deployments easy and reliable using Ansible automation.

In the previous blog post, we explained what ‘Community Roles for SAP’ are and how we can use those to extend the supported ‘Red Hat Enterprise Linux System Roles for SAP’ capabilities.

In this blog post, we are going to explain how to use ‘Community Roles for SAP’ and ‘Red Hat Enterprise Linux System Roles for SAP’ together to achieve end-to-end automation for both SAP HANA and SAP S/4HANA.

All these Ansible Roles and how to use those has been explained on previous posts. Please check ‘part 2’ and ‘part 3’ of these blog posts to fully understand the following explanations.

We are going to explore two different options to deploy SAP HANA and SAP S/4HANA end-to-end. In the first one, we are going to use an RHEL server with Ansible Engine installed on it. In the second one, we are going to use Ansible Tower.

 

Ansible Engine use case

For this use case we are going to create the following on the RHEL hosts where we have installed Ansible Engine:

  • An Ansible Inventory that will contain the target RHEL hosts information and all the required variables to be used with the roles.
  • An Ansible Playbook that will use the previous inventory to get the target RHEL hosts to the desired state.

As we have mentioned several times, Ansible is quite flexible when it comes to inventories. This is a valid inventory for this use case, but you can adapt to your preferences:

❯ tree .
.
├── group_vars
│   └── sap_hosts.yml
├── host_vars
│   ├── hana01.yml
│   └── s4hana01.yml
├── hosts
❯ cat hosts
[hana]
hana01

[s4hana]
s4hana01

[sap_hosts:children]
hana
s4hana
❯ cat group_vars/sap_hosts.yml
## Variables required for `sap_hostagent` role
sap_hostagent_installation_type: "rpm"
sap_hostagent_rpm_remote_path: "/software/SAPHOSTAGENT"
sap_hostagent_rpm_file_name: "saphostagentrpm_44-20009394.rpm"

## Variables required for `sap_rhsm` role
sap_rhsm_username: "myrhsmuser"
sap_rhsm_password: "myrhsmpassword"
sap_rhsm_pools_ids:
  - "myrhsmpool"

## Variables reqiured for `sap_preconfigure` role
sap_preconfigure_modify_etc_hosts: true
sap_domain: "automation.local
❯ cat host_vars/hana01.yml
## Variables required for 'storage' role
storage_pools:
  - name: sap
    disks:
      - vdb
    volumes:
      - name: data
        size: "200 GiB"
        mount_point: "/hana/data"
        state: present
      - name: log
        size: "100 GiB"
        mount_point: "/hana/log"
        state: present
      - name: shared
        size: "512 GiB"
        mount_point: "/hana/shared"
        state: present
      - name: sap
        size: "50 GiB"
        mount_point: "/usr/sap"
        state: present

## Variables required for 'sap_hana_deployment' role
sap_hana_deployment_bundle_path: /software/HANA_installation
sap_hana_deployment_bundle_sar_file_name: IMDB_SERVER20_046_0-80002031.SAR
sap_hana_deployment_sapcar_path: /software/SAPCAR
sap_hana_deployment_sapcar_file_name: SAPCAR_1311-80000935.EXE
sap_hana_deployment_root_password: "mysecretpassword"
sap_hana_deployment_sapadm_password: "mysecretpassword"
sap_hana_deployment_hana_sid: RH1
sap_hana_deployment_hana_instance_number: "00"
sap_hana_deployment_hana_env_type: development
sap_hana_deployment_hana_mem_restrict: "n"
sap_hana_deployment_common_master_password: "mysecretpassword"
sap_hana_deployment_sidadm_password: "mysecretpassword"
sap_hana_deployment_hana_db_system_password: "mysecretpassword"
sap_hana_deployment_ase_user_password: "mysecretpassword"
sap_hana_deployment_apply_license: false
❯ cat host_vars/s4hana01.yml
## Variables required for 'storage' role
storage_pools:
  - name: sap
    disks:
      - vdb
    volumes:
      - name: sap
        size: "50 GiB"
        mount_point: "/usr/sap"
        state: present
      - name: sapmnt
        size: "20 GiB"
        mount_point: "/usr/sapmnt"
        state: present

## Variables required for 'sap_s4hana_deployment' role
sap_s4hana_deployment_product_id: "NW_ABAP_OneHost:S4HANA1909.CORE.HDB.ABAP"
sap_s4hana_deployment_sapcar_path: "/software/SAPCAR"
sap_s4hana_deployment_sapcar_file_name: "SAPCAR_1311-80000935.EXE"
sap_s4hana_deployment_swpm_path: "/software/S4HANA_installation"
sap_s4hana_deployment_swpm_sar_file_name: "SWPM20SP04_6-80003424.SAR"
sap_s4hana_deployment_db_schema_password: "mysecretpassword"
sap_s4hana_deployment_db_schema_abap_password: "mysecretpassword"
sap_s4hana_deployment_master_password: "mysecretpassword"
sap_s4hana_deployment_hana_systemdb_password: "mysecretpassword"
sap_s4hana_deployment_sid: "RHE"
sap_s4hana_deployment_db_host: "hana01"
sap_s4hana_deployment_db_sid: "RHE"
sap_s4hana_deployment_hana_instance_nr: "00"
sap_s4hana_deployment_hana_system_password: "mysecretpassword"
sap_s4hana_deployment_parallel_jobs_nr: "30"
sap_s4hana_deployment_db_sidadm_password: "mysecretpassword"
sap_s4hana_deployment_igs_path: "/software/S4HANA_installation"
sap_s4hana_deployment_igs_file_name: "igsexe_9-80003187.sar"
sap_s4hana_deployment_igs_helper_path: "/software/S4HANA_installation"
sap_s4hana_deployment_igs_helper_file_name: "igshelper_17-10010245.sar"
sap_s4hana_deployment_kernel_dependent_path: "/software/S4HANA_installation"
sap_s4hana_deployment_kernel_dependent_file_name: "SAPEXEDB_201-80003385.SAR"
sap_s4hana_deployment_kernel_independent_path: "/software/S4HANA_installation"
sap_s4hana_deployment_kernel_independent_file_name: "SAPEXE_201-80003386.SAR"
sap_s4hana_deployment_software_path: "/software/S4HANA_installation"
sap_s4hana_deployment_sapadm_password: "mysecretpassword"
sap_s4hana_deployment_sap_sidadm_password: "mysecretpassword"
❯ cat group_vars/sap_hosts.yml
## Variables required for `sap_hostagent` role
sap_hostagent_installation_type: "rpm"
sap_hostagent_rpm_remote_path: "/software/SAPHOSTAGENT"
sap_hostagent_rpm_file_name: "saphostagentrpm_44-20009394.rpm"

## Variables required for `sap_rhsm` role
sap_rhsm_username: "myrhsmuser"
sap_rhsm_password: "myrhsmpassword"
sap_rhsm_pools_ids:
  - "myrhsmpool"

## Variables reqiured for `sap_preconfigure` role
sap_preconfigure_modify_etc_hosts: true
sap_domain: "automation.local"

Once we have defined our inventory, we need to create the Ansible Playbook that will use the previous inventory. This playbook will consume multiple roles, hence we are going to pull those Ansible Roles in advance using a ‘requirements’ file:

❯ cat plays/requirements.yml
# From Ansible Galaxy 'Community Roles'
- name: redhat_sap.sap_rhsm
- name: redhat_sap.sap_hostagent
- name: redhat_sap.sap_hana_deployment
- name: redhat_sap.sap_s4hana_deployment

# From upstream 'RHEL System Roles'
- src: https://github.com/linux-system-roles/sap-preconfigure.git
- src: https://github.com/linux-system-roles/sap-hana-preconfigure.git
- src: https://github.com/linux-system-roles/sap-netweaver-preconfigure.git
- src: https://github.com/linux-system-roles/storage.git 
❯ cat plays/sap-deploy.yml
---
- hosts: sap_hosts
  roles:
    - { role: redhat_sap.sap_rhsm }
    - { role: storage }
    - { role: redhat_sap.sap_hostagent }
    - { role: sap-preconfigure }

- hosts: hana
  roles:
    - { role: sap-hana-preconfigure }
    - { role: redhat_sap.sap_hana_deployment }

- hosts: s4hana
  roles:
    - { role: sap-netweaver-preconfigure }
    - { role: redhat_sap.sap_s4hana_deployment }

Before using the playbook, let’s pull the roles with ‘ansible-galaxy’:

❯ ansible-galaxy install -r requirements.yml -p roles
- downloading role 'sap_rhsm', owned by redhat_sap
- downloading role from https://github.com/redhat-sap/sap-rhsm/archive/master.tar.gz
- extracting redhat_sap.sap_rhsm to /Users/mak/GIT/sap-blog-part-4/sap-automation/plays/roles/redhat_sap.sap_rhsm
- redhat_sap.sap_rhsm (master) was installed successfully
- downloading role 'sap_hostagent', owned by redhat_sap
- downloading role from https://github.com/redhat-sap/sap-hostagent/archive/master.tar.gz
- extracting redhat_sap.sap_hostagent to /Users/mak/GIT/sap-blog-part-4/sap-automation/plays/roles/redhat_sap.sap_hostagent
- redhat_sap.sap_hostagent (master) was installed successfully
- downloading role 'sap_hana_deployment', owned by redhat_sap
- downloading role from https://github.com/redhat-sap/sap-hana-deployment/archive/master.tar.gz
- extracting redhat_sap.sap_hana_deployment to /Users/mak/GIT/sap-blog-part-4/sap-automation/plays/roles/redhat_sap.sap_hana_deployment
- redhat_sap.sap_hana_deployment (master) was installed successfully
- downloading role 'sap_s4hana_deployment', owned by redhat_sap
- downloading role from https://github.com/redhat-sap/sap-s4hana-deployment/archive/master.tar.gz
- extracting redhat_sap.sap_s4hana_deployment to /Users/mak/GIT/sap-blog-part-4/sap-automation/plays/roles/redhat_sap.sap_s4hana_deployment
- redhat_sap.sap_s4hana_deployment (master) was installed successfully
- extracting sap-preconfigure to /Users/mak/GIT/sap-blog-part-4/sap-automation/plays/roles/sap-preconfigure
- sap-preconfigure was installed successfully
- extracting sap-hana-preconfigure to /Users/mak/GIT/sap-blog-part-4/sap-automation/plays/roles/sap-hana-preconfigure
- sap-hana-preconfigure was installed successfully
- extracting sap-netweaver-preconfigure to /Users/mak/GIT/sap-blog-part-4/sap-automation/plays/roles/sap-netweaver-preconfigure
- sap-netweaver-preconfigure was installed successfully
- extracting storage to /Users/mak/GIT/sap-blog-part-4/sap-automation/plays/roles/storage
- storage was installed successfully
❯ tree -L 1 roles
roles
├── redhat_sap.sap_hana_deployment
├── redhat_sap.sap_hostagent
├── redhat_sap.sap_rhsm
├── redhat_sap.sap_s4hana_deployment
├── sap-hana-preconfigure
├── sap-netweaver-preconfigure
├── sap-preconfigure
└── storage

We can now execute the playbook to automate the deployment of SAP HANA and SAP S/4HANA:

❯ ansible-playbook -i hosts plays/sap-deploy.yml

PLAY [sap_hosts] ****************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************************************************************
ok: [hana01]
ok: [s4hana01]

TASK [redhat_sap.sap_rhsm : Unregister the system if already registered - if this is a force re-registration] ********************************************************************************************************************************
changed: [hana01] => (item=subscription-manager clean)
changed: [s4hana01] => (item=subscription-manager clean)
changed: [hana01] => (item=subscription-manager remove --all)
changed: [s4hana01] => (item=subscription-manager remove --all)
changed: [hana01] => (item=yum remove -y "katello-ca-consumer-*")
changed: [s4hana01] => (item=yum remove -y "katello-ca-consumer-*")

TASK [redhat_sap.sap_rhsm : Install Satellite certificate (if applicable)] *******************************************************************************************************************************************************************
changed: [hana01]
changed: [s4hana01]

TASK [redhat_sap.sap_rhsm : Register system using Red Hat Subscription Manager] **************************************************************************************************************************************************************
skipping: [hana01]
skipping: [s4hana01]
…
…
…

Once the playbook has finished, both SAP HANA and SAP S/4HANA will be deployed, configured and running on the target RHEL hosts.

 

Ansible Tower use case

For this use case, we are going to use Ansible Tower to automate the end to end process. We still need inventories, playbooks and roles for Tower; the main difference with the previous use case is how these are presented by Tower and consumed by the Ansible Engine in the Tower host.

Ansible Tower is very flexible as well on how you can define your inventories and your playbooks. The best practice is to keep all your code and configuration in a source control management tool like GitHub.

This also applies to the inventory, where dynamic inventories are recommended, and these can be discovered via API calls to your preferred Cloud provider, or getting this information from the source control management tool.

For this use case, we are storing all the playbooks and role requirements information in GitHub and the inventory will be manually configured for simplicity.

Let’s start with the inventory, We are going to create an inventory called ‘sap-hosts’. Then we are adding some variables (the ones that are common to every host in the inventory) already in the first window. As you can see the variables are similar to the ones we have defined in the previous use case in the ‘group_vars’ directory. The only exception here is the variables with sensitive information for RHSM as we are adding those as Tower credentials, but you can add those there as well if required.

We are now creating 2 hosts inside this inventory, ‘hana’ and ‘s4hana’. The same way we added the variables for each host under ‘host_vars’ in the previous use case, we are adding the corresponding variables for each host.

Now that we have defined the inventory, we need to create the playbooks that will consume the roles as we did in the previous use case. As we mentioned before, we are storing all this information in GitHub. Tower Projects and Tower job Template is how this information is going to be consumed in Ansible Tower.

Ansible Tower projects is a logical collection of Ansible playbooks. Using Tower projects you can manage playbooks and playbook directories by either placing them manually under the Project Base Path on your Tower server or by placing your playbooks into a source code management (SCM) system supported by Tower. The last is the approach used here, where projects will pull the information from GitHub.

For this use case, all the projects are pointing to the same GitHub Repository. This is a multi-branch repository where each branch is keeping different playbooks using different Ansible Roles.

When configuring SCM based Tower projects, this information (git URL and branch) we have provided is used to pull the information from each branch.

Tower job templates are definitions and sets of parameters for running Ansible jobs. In other words, it will use playbooks from Tower projects explained in the previous step with hosts from selected inventories.

Let’s review the whole flow for one of the items to get a better understanding:

  • sap-hostagent job template is using play.yml Playbook from sap-hostagent project which includes the redhat_sap.sap_hostagent Role as part of the Playbook.
  • sap-hostagent project is using https://github.com/redhat-sap/sap-tower-projects.git repository specifically on the sap-hostagent branch.
  • sap-hostagent branch from that repository contains the playbook play.yml previously mentioned and a roles directory containing a requirements.yml file.
  • requirements.yml file contains the reference to redhat_sap.sap_hostagent Ansible Galaxy Role.
  • Ansible Tower will automatically pull that Role during the job template execution, so this can be used by the play.yml Playbook.

Now we have defined all the required objects (inventories, projects and job templates), we are going to create a new object called workflows. Tower Workflow job templates link together a sequence of disparate resources that accomplishes the task of tracking the full set of jobs that were part of the release process as a single unit. It allows you to create pipeline-like strategies to automate your IT landscape.

As you can see from the picture above, we have created a Tower workflow that put all the pieces together with the following logic:

  1. Register the systems with the required repositories for SAP workloads.
  2. If previous step success, configure the required file systems and mount points for SAP HANA and SAP S/4HANA.
  3. If previous step success, install SAP Host Agent on both systems.
  4. If previous step success, run the required configuration following SAP Notes to support SAP workloads on both systems.
  5. If previous step success, run in parallel the requirements following SAP Notes both for SAP HANA and SAP S/4HANA on each host.
  6. If previous parallel steps succeed, deploy HANA in the ‘hana’ host.
  7. If previous step success, deploy S/4HANA in the ‘s4hana’ hosts.

We can now execute the Tower workflow, and the process will go through all the job templates we have put together on this pipeline.

Once the workflow has completed successfully, we can login into the ‘hana’ and ‘s4hana’ RHEL servers and check the results.

We will see SAP HANA configured and running in the ‘hana’ server:

hana:rheadm> HDB info
USER          PID     PPID  %CPU        VSZ        RSS COMMAND
rheadm     140412   140411   0.0     234172       5104 -sh
rheadm     141604   140412   0.0     222712       3332  \_ /bin/sh /usr/sap/RHE/HDB00/HDB info
rheadm     141635   141604   0.0     266920       3932      \_ ps fx -U rheadm -o user:8,pid:8,ppid:8,pcpu:5,vsz:10,rss:10,args
rheadm      34937        1   0.0    4015240      47984 hdbrsutil  --start --port 30003 --volume 3 --volumesuffix mnt00001/hdb00003.00003 --identifier 15840414
rheadm      28661        1   0.0     672908      15932 hdbrsutil  --start --port 30001 --volume 1 --volumesuffix mnt00001/hdb00001 --identifier 1584039495
rheadm      28507        1   0.0      24964       1336 sapstart pf=/hana/shared/RHE/profile/RHE_HDB00_hana
rheadm      28515    28507   0.0     425712      33416  \_ /usr/sap/RHE/HDB00/hana/trace/hdb.sapRHE_HDB00 -d -nw -f /usr/sap/RHE/HDB00/hana/daemon.ini pf=/usr
rheadm      28533    28515   6.8    6692276    3433656      \_ hdbnameserver
rheadm      28869    28515   0.3     674884      93748      \_ hdbcompileserver
rheadm      28872    28515   4.5     724868     151048      \_ hdbpreprocessor
rheadm      29276    28515   0.3    1921836     201392      \_ hdbwebdispatcher
rheadm      33961    28515  51.6   49781808   46822336      \_ hdbindexserver -port 30003
rheadm      34037    28515   0.8    3203024    1155388      \_ hdbxsengine -port 30007
rheadm      34040    28515   0.8    4671316    2417044      \_ hdbdocstore -port 30040
rheadm      34043    28515   0.8    3107012    1157632      \_ hdbdpserver -port 30011
rheadm      35423    28515   0.3    1692816     328896      \_ hdbdiserver -port 30025
rheadm      28433        1   0.0     520996      23900 /usr/sap/RHE/HDB00/exe/sapstartsrv pf=/hana/shared/RHE/profile/RHE_HDB00_hana -D -u rheadm

And SAP S/4HANA configured and running in the ‘s4hana’ server:

$ ps auxwwf | grep rheadm | grep -v grep
rheadm   32386  0.0  0.2 893884 91780 ?        Ssl  Mar12   0:09 /usr/sap/RHE/ASCS01/exe/sapstartsrv pf=/usr/sap/RHE/SYS/profile/RHE_ASCS01_s4hana -D -u rheadm
rheadm     496  0.0  0.0  62624  3964 ?        Ss   Mar12   0:00 sapstart pf=/usr/sap/RHE/SYS/profile/RHE_ASCS01_s4hana
rheadm     509  0.0  0.0 100016 22248 ?        Ssl  Mar12   0:00  \_ ms.sapRHE_ASCS01 pf=/usr/sap/RHE/SYS/profile/RHE_ASCS01_s4hana
rheadm     510  0.0  2.2 2266592 749396 ?      Ssl  Mar12   0:09  \_ enq.sapRHE_ASCS01 pf=/usr/sap/RHE/SYS/profile/RHE_ASCS01_s4hana
rheadm    2143  0.0  0.1 903668 47508 ?        Ssl  Mar12   0:05 /usr/sap/RHE/D00/exe/sapstartsrv pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana -D -u rheadm
rheadm    6637  0.0  0.0  62768  4208 ?        Ss   Mar12   0:00 sapstart pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6652  0.0  0.5 32335464 178100 ?     Ssl  Mar12   0:10  \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6657  0.0  0.1 663840 34116 ?        S    Mar12   0:02  |   \_ gwrd -dp pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6658  0.0  0.4 1833160 146000 ?      Sl   Mar12   0:02  |   \_ icman -attach pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6659  0.0  4.9 32392208 1623068 ?    S    Mar12   0:22  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6660  0.0  1.6 32384420 551340 ?     S    Mar12   0:07  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6661  0.0  2.5 32401640 830196 ?     S    Mar12   0:27  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6662  0.0  2.2 32385604 746780 ?     S    Mar12   0:26  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6663  0.0  1.8 32385988 605064 ?     S    Mar12   0:13  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6664  0.0  1.8 32383096 619660 ?     S    Mar12   0:11  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6665  0.0  2.0 32383956 663848 ?     S    Mar12   0:13  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6666  0.0  1.8 32379024 593920 ?     S    Mar12   0:13  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6667  0.0  1.8 32385948 592028 ?     S    Mar12   0:18  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6668  0.0  2.0 32387128 674740 ?     S    Mar12   0:17  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6669  0.0  0.3 32354428 103696 ?     S    Mar12   0:02  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6670  0.0  1.3 32524396 435252 ?     S    Mar12   0:20  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6671  0.0  2.1 32501108 697152 ?     S    Mar12   0:20  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6672  0.0  1.1 32467288 376772 ?     S    Mar12   0:19  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6673  0.0  1.8 32444420 621832 ?     S    Mar12   0:12  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6674  0.0  1.5 32527136 504376 ?     S    Mar12   0:30  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6675  0.0  1.2 32532704 413528 ?     S    Mar12   0:20  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6676  0.0  0.3 32357480 125284 ?     S    Mar12   0:04  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6677  0.0  0.3 32354428 104068 ?     S    Mar12   0:02  |   \_ dw.sapRHE_D00 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6653  0.0  0.0  63720  9416 ?        Ss   Mar12   0:00  \_ ig.sapRHE_D00 -mode=profile pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6654  0.0  0.0 1288252 28256 ?       Sl   Mar12   0:10      \_ /usr/sap/RHE/D00/exe/igsmux_mt -mode=profile -restartcount=0 -wdpid=6653 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6655  0.0  0.2 1150676 80808 ?       Sl   Mar12   0:06      \_ /usr/sap/RHE/D00/exe/igspw_mt -mode=profile -no=0 -restartcount=0 -wdpid=6653 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana
rheadm    6656  0.0  0.2 1150680 81356 ?       Sl   Mar12   0:06      \_ /usr/sap/RHE/D00/exe/igspw_mt -mode=profile -no=1 -restartcount=0 -wdpid=6653 pf=/usr/sap/RHE/SYS/profile/RHE_D00_s4hana

We have deployed the whole stack from ‘just one click’. Ansible Tower has a powerful REST API that can be integrated with 3rd party tools or custom services. As an example, you could write some integrations from your IT ticketing system (if you are using any) so any user in your Company would be able to request an environment like the one we have seen just opening a ticket. With the appropriate API call, Ansible Tower could automatically go through all this process and report back to the user with the details once deployed.

 

Conclusion

As already mentioned in the previous post, ‘Everything as Code’ is a very powerful engineering practice while adopting DevOps in your organization. We have seen a real example end-to-end here for this practice and how to implement it in your organization.

Using automation products like Ansible Tower, we can leverage a lot of work that is actually done by the operations team to processes that are executed automatically in the background, moving from a user request that could take days to self-service models that are completed without user intervention.

This will allow the operations team to less focus on repetitive tasks and allow these teams to focus on the reliability of your IT landscape and tasks that add much more value to the whole company.

 

Blog Post Series references

If you missed any previous posts from this series, check the following links:

Be the first to leave a comment
You must be Logged on to comment or reply to a post.