Taking IBM’s UrbanCode Deploy to an Exciting New Level - Part 1
The past couple of months have been spent getting quite familiar with the UrbanCode suite of tools, in particular UrbanCode Deploy. UrbanCode Deploy can do a lot of the heavy lifting for deployment configuration automation; the processes most organizations do manually and/or with assorted scripts.
The project that I am working on is a proof-of-concept to install UrbanCode Deploy for an organization and show that it can be utilized in place of the manual and time-consuming processes that are currently in place. The main goals are to speed up the process, as well as make them consistent, which will reduce the error and provide feedback quicker. This involves installing the UrbanCode Deploy software application and an agent, configuring it to deploy and configure a virtual machine and then deploying the software application on top of that virtual machine. Once we can show that is possible, we will do that for all of their virtual machines and applications that encompass their system. It is a small part of the bigger system solution of automating the development and testing process from end to end. In order to deploy applications and environments, one needs UrbanCode Deploy installed on a machine that can talk to the target machine, in addition to having at least one deployment agent installed on the target machine.
Part of my latest challenge is to automate the deployment/installation of UrbanCode Deploy by using UrbanCode Deploy! Wrap your head around that for one second. In theory, this should be a no-brainer. The intent of UrbanCode Deploy is to be able to take any application and/or environment and deploy and configure it; it shouldn’t matter that the application being deployed is the one that is also the engine to deploy it…right?
The main considerations are:
- Downloading and unzipping the server installation package and modifying the install.properties file with the preferred values for this instance. For this first round, the install.properties will be populated with values known ahead of time. One future feature might be to be able to interactively input certain values in real-time.
- Running the non-interactive installation routine for the server, which is install-server.sh.
- Automatically installing the agent on the target system using the newly installed UrbanCode Deploy – this will be done using the install-agent-from-file.sh after it is edited with the preferred values for this instance.
- Automatically starting the agent and starting the server.
- UrbanCode Deploy should be ready to roll and accessible via the URL and credentials that it was configured for.
- There are other considerations as well, such as which database to install. Initially, we’ll use the default, which is Derby for the database, but for production we will move to a more robust option. The specific steps for both agent and server installations are well-documented in IBM’s Knowledge Center. The key will be to determine how to do this by auto running from a disk.
The power of UrbanCode is immense when one thinks about the possibilities. Looking forward to reporting back on the progress and results of this challenge and letting you know about the next!
DevOps is great and UrbanCode is how it’s done! Between UrbanCode Deploy and UrbanCode Release, the automated deployment of software across multiple environments (Dev – Test – Staging – Production) can not only be fully automated, but can be managed, tracked, reported on and fully integrated with your environment.