# The architecture of declarative configuration management

DevFeed: [The architecture of declarative configuration management](<https://devfeed.tech/articles/the-architecture-of-declarative-configuration-management-21948.md>)

Original publisher: [Read original article](<https://blog.nelhage.com/post/declarative-configuration-management/>)

Author: Nelson Elhage

Published: 2019-11-12T22:00:00Z

Content type: article

Language: en

Sources: [Nelson Elhage](<https://devfeed.tech/sources/nelson-elhage.md>)

Topics: [configuration-management](<https://devfeed.tech/topics/configuration-management.md>), [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Puppet](<https://devfeed.tech/topics/puppet.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Amazon EC2](<https://devfeed.tech/topics/amazon-ec2.md>), [Google Cloud Platform (GCP)](<https://devfeed.tech/topics/google-cloud.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [code](<https://devfeed.tech/tags/code.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [configuration-management](<https://devfeed.tech/tags/configuration-management.md>), [data](<https://devfeed.tech/tags/data.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [interface](<https://devfeed.tech/tags/interface.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [puppet](<https://devfeed.tech/tags/puppet.md>), [state](<https://devfeed.tech/tags/state.md>), [terraform](<https://devfeed.tech/tags/terraform.md>)

## AI overview

This article presents a conceptual model of declarative configuration management tools. It explains how these tools represent a desired system state, compare it with the current state, and update the system to match. The article also describes resource schemas as a core architectural layer and discusses examples including Puppet, Chef, Terraform, and Kubernetes.

## Source excerpt

With the ongoing move towards "infrastructure-as-code" and similar notions, there's been an ongoing increase in the number and popularity of declarative configuration management tools. This post attempts to lay out my mental model of the conceptual architecture and internal layering of such tools, and some wishes I have for how they might work differently, based on this model. Background: declarative configuration management Declarative configuration management refers to the class of tools that allow operators to declare a desired state of some system (be it a physical machine, an EC2 VPC, an entire Google Cloud account, or anything else), and then allow the system to automatically compare that desired state to the present state, and then automatically update the managed system to match the declared state.