【发布时间】:2014-07-10 23:14:41
【问题描述】:
我正在尝试使用 Puppet 来更新 ASP.NET web.config 中的任意 appsettings 列表(用于部署目的),我处于两难境地,主要是因为我是 puppet 中真正的 n00b。
我有这个 yaml 文件 (hiera)
---
appSettings:
setting1: "hello"
setting2: "world!"
setting3: "lalala"
setting[x] 的数量可以任意跨越(一个 appSetting),我想循环遍历哈希键/值以更新 web.config 中相应的appSetting/add(使用带有 powershell 的exec)问题关于如何迭代 keys 和 values,我是否已经搜索过。
我遇到了create_resources,这当然会使用一组预先确定的键迭代哈希哈希。同样,清单中的键名是未知的(因此迭代键/值对)。
感谢任何指导。
编辑:看起来有一个 keys() 函数我可以在散列上使用并对其进行迭代,然后使用 hiera_hash('appSettings') 来获取散列并遍历值。
【问题讨论】:
-
这种方法听起来有点滥用。将键/值对写入代理上的文件并让单个整体 PowerShell 脚本一次性完成所有编辑不是更经济吗?
-
@FelixFrank 抱歉,我不太明白为什么它是“滥用”。 PowerShell 脚本将一次更新 web.config 一个应用程序设置。你能详细说明什么是更好的方法吗?
-
理想情况下,您可以创建一个template 来发出文件的全部内容。除此之外,最好只在两种资源中管理事物 - 一个具有在 Hiera 中找到的键/值对的文件,另一个具有稍微更强大的脚本的
exec来完成所有当前高管的工作并申请所有键/值对。您可能需要一个额外的脚本来确定目标文件是否有工作要做,以形成您的onlyif条件。 - 根据性能的重要性,这可能是吹毛求疵 -
@FelixFrank 哦,我明白了...我最初想使用 augeas,但它在 Windows 中不可用...我遇到了 puppet 的模板功能,但我没有想到我可以使用它...感谢您的指点。
标签: puppet