我有一个允许我生成随机密码的功能。我的功能在没有木偶大师的情况下运作良好。当我尝试使用母版时,在调用函数时会出现错误:
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_random_password(10)
调用该函数。
例如,当我在函数中直接指定长度为10时。密码在主模式下很好地生成。
你知道为什么我不能指定长度值吗?
答案 0 :(得分:0)
目前还不清楚为什么这适用于puppet apply
(如果这是你的暗示),但错误很可能是打字问题。
尝试
length = args[0].to_i
答案 1 :(得分:0)
据我所知,对于这种情况,我使用puppet generate()函数创建随机密码并将其存储在主服务器上的持久数据存储中。
例如,SQLITE数据库或其他东西。这样,如果密码不存在,则会随机生成密码,如果密码已经存在,则使用相同的密码。
始终管理资源非常重要,这样如果在受管节点上更改了密码,Puppet就会意识到这一点,将其更改为您正在管理的值,并报告它已执行此操作如此。