What I Do
I have been using Docker and creating containers for a number of years now. I have contributed to Docker's registry for a few images which are being used in the company. Feel free to check them out.
Setup multiple pipelines for different projects.
The majority of these pipelines will be triggered by a webhook, spin up a VM using a pre-existing image, use global tools to build, scan with sonarqube, deploy to our artefact repository and tag the release. The others are for various jobs such as owasp scanning dependency vulnerabilities.
Been writing scripts in Python for a couple of years to help with automation. Some examples include:
- Create vpn certs for new users, copy to local location and change permissions ready for use.
- Use Nexus api to search and download artifacts from repo providing project and version number. This then changes permissions for the files and zips them up ready to be transferred.
- Grab container image names and version, write the information to a html file, deploy an nginx container to present information to developers.
- Produce Sonarqube report by using the sonarqube api, pulling json data in pandas dataframes and exporting the results in an excel spreadsheet
Prometheus is used for exporting metrics. The metrics pumped out can depend on the exporter, but I'd say the default exporter to have is node_exporter which pumps metrics on the system state. Some examples of what I've used prometheus teamed with Grafana are:
- Total drive space used
- CPU usage
- Ram usage
- Jenkins metrics for builds, nodes and availability
Setup Grafana to display metrics of our environment to the department.
This gives us and other staff in the department an idea how healthy our environment is and to help us identify any potential issues.
I've also setup alerts in Grafana and integrated slack communication to provide alerts to the required department depending on the alert.
Access Gitlab on a daily basis to work with git repo's, do general admin work, setup webhooks, setup git runners for autodevops, etc.
Been working with AWS for a few years hosting production environments. Primarily set everything up with Terraform, but will from time to time either manually test things in console or through aws cli.
Primarily work with azure to setup our environment. Although for the most part I've used Terraform with Azure to setup VMs, nics, subnets and storage. The following experience I have with Azure portal and cli is as follows.
- Creation of automation accounts
- Creation of service tokens for Azure access from other applications
- Setup of OMS agent across Nodes
- Setup of periodic backups
Terraform can be used to setup the infrastructure of an environment. Terraform is meant to be agnostic. This means you can setup an environment for a specific cloud provider and if you need to port the existing infrastructure to another cloud provider, there should be small changes needed for it to work.
Ultimately Terraform is a tool to communicate with cloud providers to build the infrastructure. Some examples of work I've done with Terraform are:
- Created VMs
- Setup Storage accounts
- Setup NSG Rules
- Creation of data disks
Ansible is used for configuration management. This tool helps a lot with setup after a new VM is started. With it, you can just write roles to go through and run on the selected host machine. Some roles I have personally wrote are:
- Docker TLS
- Default swap
- Azure linux agent
This static code analysis tool is used to scan and give developers an idea of the bugs and issues in their project. It can also provide a quality gate whilst building the prevent builds going any further should a certain threshold be hit. This makes sure a build doesn't get released if there are too many bugs/issues or vulnerabilities.
Mostly used slack for communication between teams, I have also used it for multiple custom integrations such as having Jenkins inform developers on successful builds or having Grafana send an alert to my team if resources are low on nodes.
Written multiple articles to help other colleagues with information. Typically use Confluence as a main source of information and a way we can keep track of particular issues or write our own manuals for procedures and processes.