Ruby 使用puppet函数获取随机密码

Ruby 使用puppet函数获取随机密码,ruby,puppet,Ruby,Puppet,我有一个函数,允许我生成随机密码。没有木偶师,我的功能正常。当我尝试使用主机时,调用函数时出现错误: Error 400 on SERVER: bad value for range 以下是我的功能: module Puppet::Parser::Functions newfunction(:get_random_password, :type => :rvalue, :doc => <<-EOS Returns a random password. EOS

我有一个函数,允许我生成随机密码。没有木偶师,我的功能正常。当我尝试使用主机时,调用函数时出现错误:

Error 400 on SERVER: bad value for range
以下是我的功能:

module Puppet::Parser::Functions
  newfunction(:get_random_password, :type => :rvalue, :doc => <<-EOS
Returns a random password.
    EOS
  ) do |args|
    raise(Puppet::ParseError, "get_random_password(): Wrong number of arguments " +
      "given (#{args.size} for 1)") if args.size != 1
    specials = ((33..33).to_a + (35..38).to_a + (40..47).to_a + (58..64).to_a + (91..93).to_a + (95..96).to_a + (123..125).to_a).pack('U*').chars.to_a
    numbers  = (0..9).to_a
    alphal = ('a'..'z').to_a
    alphau = ('A'..'Z').to_a
    length = args[0]
    CHARS = (alphal + specials + numbers + alphau)
    pwd = CHARS.sort_by { rand }.join[0...length]
    return pwd
  end
end
在这两种情况下都使用$pwd=get\u random\u password10调用该函数

例如,当我在函数中直接指定长度为10时。密码在主模式下生成良好


你知道我为什么不能指定长度值吗?

如果这是你暗示的,那么为什么puppet apply可以这样做还不清楚,但是错误很可能是键入问题

试一试


据我所知,对于这种情况,我使用puppet generate函数创建随机密码,并将其存储在主机上的持久数据存储中

例如,SQLITE数据库之类的。这样,如果密码不存在,则随机生成密码;如果密码已经存在,则使用相同的密码


始终管理资源是很重要的,这样,如果在托管节点上更改密码,Puppet就会意识到这一点,将其更改为您正在管理的值,并报告它是这样做的。

FYI:对于像密码这样的敏感数据,从安全角度来看,比按{rand}排序要好得多。您好,我就是这样。我发现它后1小时,我张贴的问题,我忘了更新这里的帖子。谢谢你的回答!
length = args[0].to_i