Skip to main content
NetApp Solutions

Getting started

Contributors kevin-hoke

This solution has been designed to be run in an AWX/Tower environment or by CLI on an Ansible control host.


For AWX/Tower environments, you are guided through creating an inventory of your ONTAP cluster management and Oracle server (IPs and hostnames), creating credentials, configuring a project that pulls the Ansible code from NetApp Automation Github, and the Job Template that launches the automation.

  1. Fill out the variables specific to your environment, and copy and paste them into the Extra Vars fields in your job template.

  2. After the extra vars have been added to your job template, you can launch the automation.

  3. The job template is run in three phases by specifying tags for ontap_config, linux_config, and oracle_config.

CLI via the Ansible control host

  1. To configure the Linux host so that is can be used as an Ansible control host
    click here for detailed instructions

  2. After the Ansible control host is configured, you can git clone the Ansible Automation repository.

  3. Edit the hosts file with the IPs and/or hostnames of your ONTAP cluster management and Oracle server's management IPs.

  4. Fill out the variables specific to your environment, and copy and paste them into the vars.yml file.

  5. Each Oracle host has a variable file identified by its hostname that contains host-specific variables.

  6. After all variable files have been completed, you can run the playbook in three phases by specifying tags for ontap_config, linux_config, and oracle_config.


Environment Requirements

Ansible environment

AWX/Tower or Linux host to be the Ansible control host

Ansible v.2.10 and higher

Python 3

Python libraries
- netapp-lib
- xmltodict
- jmespath


ONTAP version 9.3 - 9.7

Two data aggregates

NFS vlan and ifgrp created

Oracle server(s)

RHEL 7/8

Oracle Linux 7/8

Network interfaces for NFS, public, and optional mgmt

Oracle installation files on Oracle servers

Automation Details

This automated deployment is designed with a single Ansible playbook that consists of three separate roles. The roles are for ONTAP, Linux, and Oracle configurations.
The following table describes which tasks are being automated.

Role Tasks


Pre-check of the ONTAP environment

Creation of NFS based SVM for Oracle

Creation of export policy

Creation of volumes for Oracle

Creation of NFS LIFs


Create mount points and mount NFS volumes

Verify NFS mounts

OS specific configuration

Create Oracle directories

Configure hugepages

Disable SELinux and firewall daemon

Enable and start chronyd service

increase file descriptor hard limit

Create pam.d session file


Oracle software installation

Create Oracle listener

Create Oracle databases

Oracle environment configuration

Save PDB state

Enable instance archive mode

Enable DNFS client

Enable database auto startup and shutdown between OS reboots

Default parameters

To simplify automation, we have preset many required Oracle deployment parameters with default values. It is generally not necessary to change the default parameters for most deployments. A more advanced user can make changes to the default parameters with caution. The default parameters are located in each role folder under defaults directory.

Deployment instructions

Before starting, download the following Oracle installation and patch files and place them in the /tmp/archive directory with read, write, and execute access for all users on each DB server to be deployed. The automation tasks look for the named installation files in that particular directory for Oracle installation and configuration. -- 19.3 base installer -- 19.8 RU patch -- opatch version


You should read license information as stated in the Github repository. By accessing, downloading, installing, or using the content in this repository, you agree the terms of the license laid out here.

Note that there are certain restrictions around producing and/or sharing any derivative works with the content in this repository. Please make sure you read the terms of the License before using the content. If you do not agree to all of the terms, do not access, download, or use the content in this repository.