我已经为界面创建了一个 puppet 资源。除了以太网接口(interface)外,我的交换机上的大多数接口(interface)名称都是小写的,因此我修改了接口(interface)名称以希望减少 list 中的错误;例如:
list :
cisco_interface { 'Ethernet1/1': description => 'foo' }
类型/cisco_interface.rb:
newparam(:name) do
munge { |value|
value.downcase
}
end
当我使用 self.instances 收集接口(interface)列表时,我的提供程序代码也会将接口(interface)名称小写。
好的,所以当我使用 list 进行测试时这很好用,但对于 puppet 资源命令却不是很好,它仅在我使用已经小写的名称调用它时才有效:
switch# puppet resource cisco_interface 'Ethernet1/1'
cisco_interface { 'Ethernet1/1':
ensure => 'absent',
}
switch# puppet resource cisco_interface 'ethernet1/1'
cisco_interface { 'ethernet1/1':
ensure => 'present',
description => 'foo',
}
puppet 资源命令名称字段似乎只是一个简单的过滤器,所以我想我被卡住了,但我想我已经看到其他资源类型像这样修改标题值。
是否有可能以适用于两种情况的方式修改标题值? 如果不是,那么我不确定是否让它区分大小写会更好,因为这是用户将在开关配置中看到的,或者“帮助”他们避免 list 中的错误。
最佳答案
你对这里发生的事情是正确的,puppet 目前要求传递到命令行的名称根据类型与名称完全匹配。它被深埋了几层,但看看 RAL 的 find
和 resource_name
方法。 .
在我看来,这不是一个重大更改,因此您可能想要记录一个缺陷或自己进行更改!
关于resources - 带有标题 munge 的 puppet 资源命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898339/