At the beginning of the fifth week at QA, I found out that I was to be doing DevOps. I started the path of DevOps with a task that involved me going through a set of tasks from a program called Puppet Quest. Puppet Quest is a guide to Puppet and was very helpful in learning the software. Puppet is a software that runs modules hosted on a master, these modules are run on agents, and perform various tasks, such as installing software.
After I had gone through all of the tasks in Puppet Quest, I have to make a module in Puppet that installs Java onto an agent machine. Puppet runs by using blocks of code to perform various tasks, such as executing a command, or checking a file is in place. Using those two types of block, I was able to get Java to install on the agent machine. First checking that the .tar file was in the shared directory and then copying it to the place where it was going to be unpacked using a file block. Command lines to unpack the .tar file were then implemented using exec blocks. Once the module was completed, it was pushed to an agent machine which ran the module and installed Java.
The next task was to create two agents, one which would install Java and one which would install Java and Maven. The Maven module was very similar to the Java module, but did not need command lines for the compiler. Getting the agents to install a unique set of modules was fairly easy. All that needed to be done was to edit a site.pp file to include the names of each node (agent) along with which modules were to be installed.
In the middle of the fifth week, we started a group project on Puppet which was to last until the end of the sixth week. The first aim of the project was to install several software through modules using Puppet. These modules ranged from being very quick and easy, such as Git, to being fairly long and arduous, such as Nexus. The process needed to be automated as much as possible, and my group managed to get it so that when all the files are in place, you only need to double click one file to set up the master and the amount of agents specified in the vagrantfile, and install all of the modules on the agents. The next part of the project was to install and use Puppet Enterprise and use that to install the modules. This took a while to complete and there were a few problems, but we eventually managed to get this working, although we could not find a way to get Puppet Enterprise to automatically accept certificate requests from the agents. The following task was to set up MCollective. This was an easy task as most of the things needed were already installed with Puppet Enterprise. The final task for the project was to set up Zabbix. This took a while, but there were not too many problems with it. My group set up a Zabbix server and agents, and provided access to the server through the web GUI. The last thing to be done in the sixth week is to give a presentation on the project.