GitOps Reloaded: orchestrated infrastructure change management in mixed enterprise environments

By Cristian Prevedello

Elevator Pitch

Have you ever dreamed to apply gitops management to systems outside kubernetes? Would you like to provision kafka topics or configure reverse proxy rules in balancers writing few lines in a yaml file? This session explains how we turned ALL our infrastructure into managed resources with GitOps&IaC

Description

In enterprise environments adopting GitOps is problematic, since we usually have a melting pot of IT systems. Moreover a new release usually impacts more than one system, and traditionally the release processes requires operations to manually configure and patch each system, and orchestrating different business units is a lengthy process and error prone.

In Previnet we built our own on premise private cloud infrastructure, and wrapped on premises non cloud native resources (like old balancer, firewall, legacy databases, kafka, etc. etc), so they can be managed in an automated and repeatable way with zero manual intervention. The platform involves an heavy use of jenkins and several custom scripted pipelines to orchestrate and react to infrastructure management events. Dedicated pipelines are employed to discover the work to be done, which is then organized and put on the to-be-done queue. Worker pipelines will pickup work items, and will offload the work to idempotent ansible playbooks to perform the heavy work on individual systems.

Notes

The platform consists in - git repository to push and store all requests coming for the end users and as source of truth for what concerns our infrastructure state - a cluster of jenkins servers that runs jobs and is used by the end user to interact with the platform when some kind of feedback/user input is required - custom developed groovy directives to implement required process and to orchestrate jobs - specific idempotent ansible playbooks to manage specific systems.

An internal presentation about our platform: https://drive.google.com/open?id=1OLG_bNmB7qHJESt9Bo8qM7mgft_9zxYgdO4NC2k3B2I