# Configuration as Code

> An overview of Configuration As Code from my perspective and experience.

Source: https://curiouslychase.com/engineering/configuration-as-code/

Configuration as Code is a term that describes a process for managing software. 

Instead of configuring software in a Graphic User Interface (for example, changing how your software works in a web browser), you configure your software by running a executable that uses _your code_ to define how the software should look.

Configuration is usually managed as a versioned artifact, so it's easy to understand how your software will be different if you make a change, easy to share the configuration before it's applied and easy to historically see how your software has changed.

Some examples of configuration as code:
- Setting the value for `workbench.preferredDarkColorTheme` in[VS Code](https://curiouslychase.com/posts/vs-code/)'s `settings.json` to a theme value

Some tools that can be used for configuring web technologies as code (note that these are primarily tools for Infrastructure as Code)

- Terraform
- Ansible
- Salt
