如何在厨师的运行时为用户设置密码

时间:2014-04-15 11:38:44

标签: knife chef

如何在运行时为chef创建用户创建密码。而不是使用openssl的加密机制,并在厨师的用户资源中设置它。

而不是以下方法:

openssl passwd -1 "theplaintextpassword"
$1$JJsvHslV$szsCjVEroftprNn4JHtDi.

然后在用户资源中设置

user "random" do  
  supports :manage_home => true  
  comment "Random User"  
  uid 1234  
  gid "users"  
  home "/home/random"  
  shell "/bin/bash"  
  password "$1$JJsvHslV$szsCjVEroftprNn4JHtDi."  
end

有没有其他选择.. ??

2 个答案:

答案 0 :(得分:3)

您可以尝试在食谱中使用Ruby生成密码密文:

require 'digest/sha2'

password = "pass@123"
salt = rand(36**8).to_s(36)
shadow_hash = password.crypt("$6$" + salt)

运行此命令后,shadow_hash包含以下字符串: $6$vf1ehwzs$VAxaPBAeXjvEMboee.xbJgMOXlCrJ.eJDPkqP.16fGyAqjq1IDkh0OpEXFRo1W04G7tl02YMQz7dKmGKLVaRd/

然后,您可以在user资源中使用它:

user "random" do  
  supports :manage_home => true  
  comment "Random User"  
  uid 1234  
  gid "users"  
  home "/home/random"  
  shell "/bin/bash"  
  password shadow_hash
end

来自http://judepereira.com/blog/use-ruby-to-generate-your-shadow-password/

答案 1 :(得分:1)

我还没有找到你想要的东西,但是openssl的食谱非常接近。通过一些修改,您应该能够改变接受字符串输入的方法,然后利用unix-crypt库加密该字符串,或者甚至只需遵循cookbook中使用的模式来创建自己的资源。

https://github.com/opscode-cookbooks/openssl

https://github.com/mogest/unix-crypt