For quite some time I planned to write a short series about automatically deploying Oracle Servers with Ansible – particularly with the module “ansible-oracle“. My Time Thieves didn’t allow that, so today, on ODC Appreciation Day, let me give this short rave on the great contribution by Mikael Sandström to our community!
Automate or die!
These aggressive words are not mine, but they depict the situation: If you want to survive the competition and the time pressure in deploying and maintaining IT infrastructures, you need to automate as much as you can. Furthermore, we all want to focus on the interesting things in our jobs and minimize the mundane tasks. Automation helps here, too.
Another important factor is standardization (of deployments in this case). Automization usually needs a certain level of standardization and this, too, increases the efficiency of your or your organization’s work.
What is Ansible?
I’ll keep this short as many readers may already know about Ansible.
Ansible is open source software that automates software provisioning, configuration management, and application deployment. Ansible connects via SSH, remote PowerShell or via other remote APIs. (…)
In contrast with popular configuration management software — such as Chef, Puppet, and CFEngine — Ansible uses an agentless architecture.
Basically, you use scripted modules do do certain tasks to achieve a desired system configuration that is described in clear-text configuration files (in YAML syntax).
This approach makes it easy to put your systems configuration under version control systems like Git, so that you can manage your “infrastructure as code”. Ideally, you’d do that in your development and test environments, and after successful test you’d go live by just “pushing the button”, i.e. running your Ansible playbooks against your production systems.
What is ansible-oracle and why should I care?
If you are responsible for dozens or even hundreds of Oracle DB servers, wouldn’t it be great to control their configuration in a central repository and have them deployed or managed by the dozens in a uniform and proven way?
Wouldn’t it be even greater to have a tool that not only does the OS and software provisioning but also creates databases for you? Be it single instance, RAC or DataGuard?
Wouldn’t it be even greater to leave the cumbersome patching process for Oracle databases to a tool that does this for you? In parallel, even?
And all that completely free and Open Source?
Look no further than ansible-oracle!
If I got that right, this tool (or module) was originally developed by Mikael Sandström to provision lab databases for the famous “RAC Attack!” seminars. And it moved on from there to grow into a general tool to provision Oracle DB servers of nearly all kind.
At my company, we offer consulting and managed services to a lot of customers. Back in the years, we suffered from the fact that all the customized deployments our consultants made and that later had to be managed by our support staff, became harder and harder to handle. We had a strong incentive to standardize the way we configure Oracle servers and Ansible with ansible-oracle soon became our tool of choice to reach this goal.
After fiddling around, evaluating and developing behind the scenes for over two years, we finally had several customer environments last year, where we provisioned all new VMs with ansible-oracle. This year, we hosted a “Hacker’s Weekend”, where 30 of my colleagues had the chance to familiarize themselves with this tool (amongst other DevOps gadgets). So I guess we’re quite committed to Ansible and ansible-oracle, now.
I’m currently in a project where our client migrates their Oracle DB VMs from Vmware to Oracle VM. I convinced them this was the perfect moment to have their new VMs provisioned and later maintained with ansible-oracle. And while we had a hard time working around several glitches in dbca in different releases, and while there is a steep learning curve when you start using Ansible, it pays off pretty soon when there are enough repeatable tasks to do.
The appreciation part
So, to finish for today, I’d like to express my appreciation to “oravirt” Mikael Sandström, who must have put an incredible amount of his time into making this fantastic tool available to the community! Please keep up your great work!
And, furthermore, to my colleague “Rendanic” Thorsten Bruhns, who went several extra miles to evangelize for this tool and approach within our organization. And who is also an active contributor to the ansible-oracle repository on GitHub.
Thank you for the kind words, much appreciated! I’m really happy that people find this tool good enough to actually use.
One little thing about the history, though:
This started out as a personal pet project of mine, and I was later approached to see if this could work with the RAC Attack project and it worked perfectly (which was, if nothing else, at least an indication that I was going in the correct direction). That project is still alive on Github but is not maintained anymore.
I have created 3 other repositories to quickly build RAC/SI-ASM/SI-FS environments using Vagrant and Virtualbox, which are all avaliable on Github.
Thank you for clarifying the history part. I had that gut feeling that I wasn’t fully correct, there.