For a long time I have felt that automation was the key to being more productive and efficient. About 18 months ago I began utilizing one of CA Server Automation's provisioning features - the Self Service Portal. I felt the User Interface (Liferay portal) was nicer than Self Service Reservation Manager (SSRM), the ability to install software didn't require the CA Client Automation integration, and the Application/ServiceTemplate model it uses was a step in the right direction of re-usability.
Eighteen months later I've provisioned over a thousand test servers for some of my teammates and myself using approximately 100 different service templates. These service templates consist of probably 30+ different applications and various versions of those applications for Windows and Linux. Even though I have had some challenges along the way and sometimes the jobs fail for various reasons (disk space on SA server is too low, VC template assignment problems, etc..), I can't imagine not having this tool. It makes it so much easier to stand up systems with the software I need to do testing. Whether its Oracle on Linux, a WebSphere Application Server, a CABI standalone or N-Tier set of systems, it's all few clicks and 2 to 3 hrs away. Don't get me wrong - the tool isn't perfect. I would really like to see a much lighter weight provisioning tool and the application model / service template model that supports the ability to select application versions when a user opens the service template to submit a provisioning job. It is possible, and I have, to offer this feature in the existing setup. But it requires scripting in the backend and the install steps are not managed through the application definitions. It is handled through the script.
So, what's next? There are so many things one can do. Some of the things that come to mind are:
- Automate some of the tasks that a support engineer has to do like restoring databases. Modifying the configuration of application to utilize that database (if needed). I was thinking of using CA Process Automation for tasks of this nature.
- Download logs and analyze them.
- Work on a log analysis tool(s). There are some tools that already exist - like ELK (Elasticsearch, Logstash, and Kibana). This is what I'm currently interested in from a log analysis tool. There are some customization's needed for it to do the things I would want it to do. But these customization's are minor if you compare it to the amount of work needed to build something similar to the already fine work made available buy the open source community for these three components. And testing the customization's on test systems before rolling out major releases - well that sounds like a use case for CA Release Automation.
- Automate the setup of development machines with the various software components needed in order to securely and successfully step through a given version of a products source code. The security aspect is fairly consistent. But the components used by various versions of a product vary. Maven version X, or Node version Y, etc... Having an automated system to handle all of the necessary dependencies and build state switches so that you could, at a given point in time, easily work on a given version on a single machine would be sweet. To some degree the service templates could get me a portion of what would be needed for these types of setups. But I think that will only get me so far. The plan is to achieve the remaining use cases via Chef.