Manage Oracle containers with Puppet

Manage Oracle containers with Puppet ora_config version 2.3 is a major update. It contains al lot of new features, updates and fixes. One of the major features is it allows you to manage Oracle container and pluggable database with Puppet. This blog post contains an overview of changes in ora_config V2.3

ora_config version 2.3 is a major update. It contains many new features, updates, and fixes.

Support for container and pluggable databases

On of the most import things this release brings, is support for pluggable databases. The work horse of database creation ora_database has been updated to facilitate this. Now you can create a new container database as easy as:

ora_database{'MY_CDB':
  ensure                  => present,
  ...
  container_database      => 'enabled',
  ...
}

Creating a pluggable database is also very easy. Again the ora_database type is enhanced to allow this. Here is an example:

ora_database{'MY_PDB':
  ensure                  => present,
  contained_by            => 'MY_CDB',
  pdb_admin_user          => 'PDB_ADMIN',
  pdb_admin_password      => 'manager1234',
}

All custom types are now able to see all Oracle objects in both the MY_CDB database as well as in the MY_PDB database. Creating a user in the PDB can be done like this:

ora_user { 'MY_USER@MY_PDB':
  ensure   => 'present'
  password => 'very_secret',
}

What is the difference? Nothing! Managing objects in a PDB is the same as managing objects in a regular database. Just like it is meant to be.

Check the documentation for all posibilities of ora_database.

Managing auditing

Version 2.3 of ora_config now support two types to manage auditing inside of an oracle database. If for example you wanted to enable statement auditing for PUBLIC DATABASE LINK statements, you could do this like this:

ora_statement_audit { 'PUBLIC DATABASE LINK@MY_DB':
  ensure => 'present',
}

Disabling would be as easy as setting ensure to absent:

ora_statement_audit { 'PUBLIC DATABASE LINK@MY_DB':
  ensure => 'absent',
}

Check the documentation for all posibilities of ora_statement_audit.

The other type of auditing that is now supported is object auditing.

ora_object_audit { 'SYS.AUD$@test':
  ensure            => 'present',
  comment_failure   => 'by_access',
  comment_success   => 'by_access',
  grant_failure     => 'my_session',
  grant_success     => 'by_session',
}

Check the documentation for all posibilities of ora_object_audit_audit.

ora_service now support clusters

The ora_service now support a extensive range of properties to manage services on a Oracle RAC cluster. Here is an example:

ora_service { 'MYSERVICE.DEVELOPMENT.ORG@SID1':
  ensure              => 'present',
  aq_ha_notifications => 'false',
  clb_goal            => 'LONG',
  dtp                 => 'false',
  failover_delay      => '0',
  failover_method     => 'NONE',
  failover_retries    => '0',
  failover_type       => 'NONE',
  lb_advisory         => 'THROUGHPUT',
  management_policy   => 'AUTOMATIC',
  preferred_instances => ['DB1', 'DB2'],
  server_pool         => ['POOL.DEVELOPMENT.ORG'],
  service_role        => 'PRIMARY',
  status              => 'running',
  taf_policy          => 'NONE',
}

Using different OS users

In older versions of ora_config using different os users for Oracle and ASM was support but albeit very difficult. In ora_config version 2.3. it has become very easy. You can now use the ora_setting type to manage all properties for connecting puppet to a database. Here is an example:

ora_setting { 'DB02':
  oracle_home => '/u01/app/oracle/product/12.1.0/db_home1',
  os_user     => 'non-standard',
}

With the introduction of ora_config 2.3 ALL database need a ora_setting in the manifest. When you are using ora_database to create the database, this is automatically taken care of. When you use ora_install classes to create your database, you must add this to your manifest.

You mast also add ora_setting for you ASM instances. Here is an example:

ora_setting { '+ASM':
  oracle_home => '/app/grid/product/12.1/grid',
  os_user     => 'grid',
  syspriv     => 'sysasm',
}

Manage Oracle directory mapping

Using the ora_directory type, you can now manage Oracle directory mapping with puppet. Here is an example:

ora_directory { 'ORACLE_OCM_CONFIG_DIR2@db':
  ensure         => 'present',
  directory_path => '/opt/oracle/app/11.04/ccr/state',
}

Manage database archivelogging

The startup, archive mode and force logging of the database can now be managed. Not only at creation time, by the properties autostart, archivelog and force_logging:

ora_database { 'DB':
  ensure        => 'present',
  archivelog    => 'disabled',
  autostart     => 'false',
  force_logging => 'disabled',
}

Add support for puppet generate type

The Puppet server (both Open Source as well as Puppet Enterprise) always had problems when using multiple version of a ruby type in multiple environments. Puppet now added puppet generate type as one of the methods to combat this problem. ora_config version 2.3 fully supports the puppet generate type command.

Get started

This concludes our post on the new possibilities for ora_config. If you are interested in the new posibilities, check out our FREE trial license to get going.