Puppet - CSV文件头

时间:2015-12-22 04:22:59

标签: csv puppet

我正在编写一个Puppet(3.6.2)模块,它通过extlookup函数从CSV文件中读取数据字段,我无法弄清楚如何告诉extlookup第一行是头字段。 extlookup是否支持此功能?如果没有,任何人都可以推荐我可以导入和使用的外部功能吗?

感谢,

PS - 是的我知道hiera,并且在YAML或JSON文件中有数据,但我的要求只是CSV文件。

布兰登

1 个答案:

答案 0 :(得分:1)

extlookup()的行为非常好documented。它对列标题没有特殊规定,这绝不是CSV格式的固有特性。实际上,如果您的标题行不能作为数据行读取,那么您的文件根本就不是CSV。

假设您的文件确实是有效的CSV,绝对最简单的解决方案是忽略该问题。仅当第一列标题重复实际或潜在数据名称时,它才会出现问题。如果没有,那么你将永远不会查找或使用第一行所代表的伪值。

如果您的文件实际上不是第一行的CSV,或者第一列名称与实际数据名称冲突,那么下一个最好的选择似乎是删除该行,或者避免创建它首先。我没有看到为什么其中一个不可能的原因。

  

我知道heira,并且在YAML或JSON文件中有数据,但我的要求只是CSV文件。

多么难过。请注意,extlookup()早已被弃用,并已从Puppet 4中删除。

我倾向于建议您实施从CSV到Hiera友好的YAML的翻译器,并在您的模块中使用Hiera。或者,Hiera支持自定义后端,并且编写一个后端并不难。我不知道Hiera的现有CSV后端,但你可以写一个。忽略标题行将在您的控制之下,您将同时实现未来验证的措施。