在资源内调用puppet函数来定义类属性

时间:2013-03-08 10:16:02

标签: puppet

我正在尝试在清单中的puppet资源中调用一个新函数,但我不知道如何创建资源来协助从资源中的函数检索的值。

定义函数

目录 puppet-module / lib / puppet / parser / functions /

module Puppet::Parser::Functions
  newfunction(:retrive_pub_key, :type => :rvalue, :doc => <<-EOS
    Returns content of ssh key pub file.
    EOS
  ) do |args|
    File.read(args[0])
  end
end

调用该函数:

$key = retrive_pub_key('/opt/ssh-keys/admin_rsa.pub')

如何使用rvalue调用资源内部的函数来定义 $ key 变量?在'admin_rsa.pub'创建之后?

调用函数

内部Puppet清单 init.pp

??? {"retrieve_key":
    ???,
    ???,
    require => [File["/opt/ssh-keys/admin_rsa.pub"],
}

我一直在关注functions in puppet

这个教程

以下是the sample project来测试功能。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望将某个文件的内容设置为/opt/ssh-keys目录中相应公钥文件的内容。

这样的事情会起作用吗?

file { 'admin_rsa'
    content => retrieve_pub_key("/opt/ssh-keys/${name}.pub"),
    path => '/home/admin/.ssh/id_rsa.pub',
    ....
    require => File["/opt/ssh-keys/${name}.pub"],
}