<?xml version="1.0" ?><entry xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/"><id>https://blog.nelhage.com/post/declarative-configuration-management/</id><link href="https://blog.nelhage.com/post/declarative-configuration-management/" rel="alternate" type="text/html"/><title>The architecture of declarative configuration management</title><summary>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.</summary><updated planet:format="November 12, 2019 10:00 PM">2019-11-12T22:00:00Z</updated><source><id>https://blog.nelhage.com/post/</id><author><name>Nelson Elhage</name></author><link href="https://blog.nelhage.com/post/" rel="alternate" type="text/html"/><link href="https://blog.nelhage.com/post/atom.xml" rel="self" type="application/rss+xml"/><subtitle>Recent content in Posts on Made of Bugs</subtitle><title>Posts on Made of Bugs</title><updated planet:format="September 09, 2026 10:07 PM">2026-09-09T22:07:43Z</updated><planet:format>rss20</planet:format><planet:bozo>false</planet:bozo><planet:items_per_page>60</planet:items_per_page><planet:name>Nelson Elhage</planet:name><planet:css-id>nelson-elhage</planet:css-id><planet:days_per_page>0</planet:days_per_page><planet:http_etag>&quot;5b2ae9eec2e293572f6ae5a000bd0161-ssl-df&quot;</planet:http_etag><planet:http_status>200</planet:http_status><planet:encoding>utf-8</planet:encoding></source></entry>