I use this because I’m lazy.
This is true. After doing something that is repetitive because either I’m testing or incrementally improving what is happen, I get frustrated. So, I automate. In this scenario, here I have an application that I’ve been working with a few people (like @stantanev), and as such spending a little bit of time automating the provisioning of the stack made sense. I value my time as I value other people’s time.
Oracle Resource Manager (ORM) is part of Oracle Cloud Infrastructure and is available in all tiers – Trials, Always Free Tier, Pay-As-You-Go or with Universal Credits. In short – EVERYONE gets it. The easiest way that I think of ORM, is that its a managed Terraform service within the Oracle Cloud Infrastructure environment. Let’s talk a look at it.
You find ORM in the menu under “Solutions and Platforms”. Firstly, you need to create a stack (this is a Terraform root module).
And then as part of defining the source of the stack and there’s a few ways to get started with ORM.
- From an folder or zip file of an existing terraform root module.
- From a github or gitlab repository (of an existing terraform root module)
- From an existing solution stack provided by us
- From an existing solution stack that defined as a template (that can be shared)
- From an existing deployment that has been introspected.
Once the modules have been loaded, then the modules are introspected for variables which are then used to configure the stack. The nice thing is that there can be further metadata defined as part of these stacks to help describe and configure the variables. As in the following the regions and compartments as drop-down lists where the list is pulled from OCI itself.
And then its very much like Terraform – Plan, Apply, Destroy the stack.
There is a difference that helps and its the drift detection which introspects into what is running and provides a side-by-side comparison of the terraform model and what is running. This is very handy for various reasons and for me it’s either debugging or environment control.
The actions are performed on compute as part of the service with the logs and terraform state also managed as part of the service.
So as an example, I’ve deployed an application that has:
- two VM compute instances (one with a set of APIs and the other with a Kafka cluster)
- an Autonomous Data Warehouse with Oracle Rest Data Services exposing APIs
- an bucket in the object storage for the static content
These resources were provisioned with the code, database schemas and web-site. ORM made the whole process easier. After a few minutes and then its done and ready.
Now, if someone else wanted another copy of it. Then its done. If someone wanted an update. Then its done quicker. Within minutes, it’s all done. And my learning experience around this was to gain more experience of Terraform and I found it was made easier with ORM on Oracle Cloud Infrastructure.
If you want to give this a try using ORM, you can try it out with copy of this from my github repository @ https://github.com/jlowe000/oci-arcade-tf. As mentioned, there’s a couple of different ways to upload the module. If need some help in getting this started – have a look the steps in the documentation around “Managing Stack” – https://docs.oracle.com/en-us/iaas/Content/ResourceManager/Tasks/managingstacksandjobs.htm#StackManaging
The README has the details there too and it’s been purposefully built in such as way that it can be run on an Always Free Tier Oracle Cloud tenancy. If you need an environment to try this out or to have a game or two – head to the following link and sign-up. https://www.oracle.com/au/cloud/free/
To find more information about Oracle Resource Manager, have a look at the documentation – https://docs.oracle.com/en-us/iaas/Content/ResourceManager/Concepts/landing.htm
Have fun learning.