GitOps basically means doing Ops while using Git as Version Control System for infrastructure configuration files.
If you can build a software version based on a state in a Version Control System, why couldn't you do that for your infrastructure?
Infrastructure as Code (IaC) is a practice for maintaining the resources needed to provision a desired system state. It includes infrastructure, configuration files, security policy, and more all declared as code and versioned.
In its vanilla form, IaC is Version Control System agnostic. It only cares about your system being described declaratively as code. It doesn't care if your configuration files are stored in Mercurial, SVN, or Git.
In IaC, a single commit or pull request that updates the configuration files which describe the infrastructure is the way to trigger changes on it. The changes can be applied manually, of course, by running the corresponding tools like Terraform, Ansible, or Chef, but it is full automation that makes it really powerful.
The GitOps practice means that the VCS is Git in the above scenario.
GitOps and DevOps are part of the same methodology and can live next to each other.
GitOps is a way to manage system infrastructure as code with Git, while DevOps is a set of practices and a mindset that can be used when doing GitOps. With GitOps, you encourage collaboration on infrastructure, shared knowledge, and understanding.
A key DevOps practice is using automation wherever possible. GitOps can also benefit from that.
With automation, infrastructure changes accepted to the repository can trigger a Continuous Integration and Continuous Delivery (CI/CD) build or just a script that actually deploys the changes automatically system-wide.
The low-level infrastructure-related workflow steps can be automated with the Better DevOps Automation for Jira app. In addition to that, you can automate Jira issue operations, like transitioning the linked development task to the "Deployed" status, or notifications (sending out emails or Slack notifications with the linked issues to the team after a successful change), and more with this app.
GitOps predicates that you use Git as the Version Control System for managing software infrastructure configurations.
Infrastructure as Code, however, doesn't dictate what VCS you put behind your strategy. There is nothing stopping you to do SvnOps, MercurialOps, or practically AnyVcsOps.
For example, if you happen to use Jira, you can use the Better Commit Policy and Better DevOps Automation for Jira apps linked to your SVN repository.
Better Commit Policy ensures the commits pushed to the repository are compliant with your company or project rules. Once there is an accepted change to configuration files, Better DevOps Automation kick-starts a Jira automation rule to run a CI build, run some tests or automatically deploy the changes to the production system.
In conclusion, you are benefiting from a GitOps strategy in multiple ways:
1. Reduce errors
Systems configurations are defined as code in a declarative way. It makes them repeatable and easy to catch errors before they hit production environments.
2. Collaboration on infrastructure configurations
It gives access to a wider set of people to system configurations while installing checkpoints such as Pull Requests and commit verification for security.
3. Faster time to market and incident response
Reestablishing system settings are faster done via code than manually. New system variables are deployed faster, changes made faster or if something goes wrong, a previous state of the system components can be restored quicker.
Levente Szabo _Midori_
Digital Marketing and Customer Success
Midori
Budapest
47 accepted answers
0 comments