Talk from Configuration Management Camp 2018, all about the high cost of current configuration management approaches, why that leads to serialisation formats like YAML and JSON being edited directly, and how schemas and auto-generation can help.
Option 2: Format-specific resources You can now use your chosen tool, but the tool has no context for the application, it’s just data, and the format still bleeds through
Import-DscResource -ModuleName DSCR_IniFile cIniFile Apple { Path = "C:\Test.ini" Section = "" Key = "Fruit_A" Value = "Apple" } Manage an INI file with DSC
webapp "cfgmgmtcamp" do static_url_path "/my_project/static" mysql_database_user "project_user_name" show_settings_route "/show-settings" debug True end A bespoke application in Chef
Generate Puppet type from schema $ ./to_puppet.py Puppet::Type.newtype(:app_config) do ensurable validate do required_properties = [ :static_url_path, :mysql_database_user, ] required_properties.each do |property| if self[property].nil? and self.provider.send(property) == :absent fail "You must provide a #{property}" end end end newparam(:path, namevar: true) do