get random password with puppet function

Posted by ninja-2 on Stack Overflow See other posts from Stack Overflow or by ninja-2
Published on 2014-06-12T12:37:11Z Indexed on 2014/06/12 21:25 UTC
Read the original article Hit count: 119

Filed under:
|

I have a function that allow me to generate random password. My function is working well without a puppetmaster. When i tried with a master an error appear when I called the function :

Error 400 on SERVER: bad value for range

Here is my function

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

The function is called in both case with $pwd = get_random_password(10).

When I specified the length directly in the function to 10 for example. the password is well generated in master mode.

Have you any idea why i can't specify the lentgth value ?

Thanks for any help.

© Stack Overflow or respective owner

Related posts about ruby

Related posts about puppet