傀儡Asp.netweb.config

Puppet Asp.net web.config

我们正在寻找使用分层数据配置进行应用程序配置管理。 Asp.net 使用 Web.config 和 App.config 文件,这些文件将配置值作为键值对 示例:

<appSettings>
<add key="key1" value="Web"/>
<add key="key2" value="16.2"/>
</appSettings>

目前我们正在使用 EPP 模板和占位符 作为值并即时生成文件。

<add key="key1" value="<%= $class_name::value1%>"/>

只是想了解一下使用 Puppet 管理 web.config、app.config 等配置文件的最佳实践是什么。欢迎提出建议。

模板

当您可以控制整个文件时,建议几乎总是模板。有fairly comprehensive documentation on templating.

  • 对 Puppet 使用 EPP 4.x+。
  • 对 Puppet 使用 ERB 3.x+。

XML 碎片

如果您不能或不想控制整个文件,另一种选择是 xml_fragment available on the forge (https://forge.puppet.com/ianoberst/xml_fragment)。

您可以看到它比模板更冗长,但具有清除和确保文件元素的粒度。

xml_fragment { "appsetting key1":
  path        => "C:/sites/site/web.config",
  ensure      => 'present',
  xpath       => "/configuration/appSettings/add[@key='key1']",
  content     => {
    attributes {
      "value" => "web"
    }
  }
}

xml_fragment { "appsetting key2":
  path        => "C:/sites/site/web.config",
  ensure      => 'present',
  xpath       => "/configuration/appSettings/add[@key='key2']",
  content     => {
    attributes {
      "value" => "16.2"
    }
  }
}