What I Do
Docker
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.
Docker hub
Jenkins
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.
Python
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
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
Grafana
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.
GitLab
Access Gitlab on a daily basis to work with git repo's, do general admin work, setup webhooks, setup git runners for autodevops, etc.
AWS
Been working with AWS for a number of years hosting production environments. Will use terraform with terragrunt to setup environments. Some modules of AWS I've worked with setting up in Terraform are:
- EC2 instances
- S3 buckets
- EKS clusters
- RDS
- Cloudwatch logs/triggers
Terraform
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
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-CE
- Prometheus
- Node_exporter
- Grafana
- Docker TLS
- Default swap
- Azure linux agent
- Glusterfs
Sonarqube
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.
Slack
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.
Confluence
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.