如何在运行时为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
有没有其他选择.. ??
答案 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中使用的模式来创建自己的资源。