Puppet, a tool in the DevOps engineer’s Arsenal

Puppet, a tool in the DevOps engineer’s Arsenal

What is Puppet?

Puppet is a open-source configuration management tool. Adoption of DevOps means that you will need some sort of configuration management tool, else you can’t automate your software delivery. Puppet is one of the many configuration management tools out there. There are many others like Chef, Ansible or Salt. There are already a HUGE number of discussion online regarding Puppet vs Chef vs Ansible vs Salt so I’m not going to talk about them over here.

What is the value of Configuration Management tool?

The power of configuration management tool will be obvious when you have hundreds and thousands of nodes to manage. When you have less than 50 nodes, you can decide the purpose of each node and manually install the required packages on it. If there’s a patch, you can just install the new fix easily. If there’s a need to disable SSLv2, you can just login to each of the server to disable them.

  • What happens if you have 1000 nodes, and you need to disable SSLv2 on all of them?
  • What if you need to update the gcc packages on 40/1000 nodes?
  • What if the annoying IT auditors want to audit your security patches in your environment?

Why do I like Puppet?

I prefer using Puppet because the following reasons:

  • Non-programmer friendly. You don’t have to write any OO code. Puppet DSL is a declarative language. You just have to specify the end state.
  • Gentle learning curve. The Puppet DSL is quite intuitive.
  • Largest community around. This is important because you can get help easily via Google
  • Additional plugin modules are available if you want to provision any software using Puppet. (For etc, Oracle)

How is using Puppet going to help me as a Database Administrator?

The typical databases to DBA ratio is about 250:1. The volume and complexity of the databases you manage is growing. On top of that, you’ve got demands from the business to do more and faster, with the same amount of resources and manpower. Now, with additional Puppet modules, you can actually manage the database level configurations using Puppet.

For example;

tablespace {'PIO_DATA': 
ensure => 'present', 
bigfile => 'yes', 
datafile => 'pio_data.dbf',
size => '200G', 
logging => 'yes',
autoextend => 'on', 
next => '100M', 
max_size => '12288M',
extent_management => 'local', 
segment_space_management => 'auto', }


I believe that using configuration management tool to deploy databases is a new trend for DBAs. It allow us to manage thousands of databases easily. However, there certain caveats to it. The Puppet oradb module is still quite new, there are still certain bugs that needs to be iron out. That said, I still believe that it is another alternative to to building your own DBaaS using Oracle OEM.

It is something I believe DBAs should explore and determine if it’s suitable for your own environment.

Wei Shan


2 thoughts on “Puppet, a tool in the DevOps engineer’s Arsenal”

  1. Hello Wei Shan, Interested to know what use cases have you created to manage Oracle using Puppet? I’m thinking of creating a module for Oracle backup and restore. Have you done it? Thanks.

  2. Hi Anthony,

    I’m using it for duplicating environments for test/dev/staging environment. Not yet using it for production 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s