我很难弄清楚如何使用厨师来运行bash命令(passwd)
我知道如何设置bash资源块但是如何设置它以便采用变量password = 'abc123'
。对于此示例,我想要执行此操作的用户是adminblah
。
bash 'analytics_password' do
code <<-EOH
sudo passwd adminblah
EOH
end
我不知道如何获取密码变量。
答案 0 :(得分:1)
您可以通过多种方式设置用户密码。如果您想使用bash
资源,可以执行此操作:
# Backslashes are escaped because of ruby
bash 'analytics_password' do
code <<-EOH
echo -e "#{password}\\n#{password}\\n" | passwd adminblah
EOH
sensitive true
end
如果您在命令行上运行此命令,则上述echo会复制输入,然后确认密码。
您还可以使用chpasswd
代替(如果可用):
bash 'analytics_password' do
code <<-EOH
echo "adminblah:#{password}" | chpasswd
EOH
sensitive true
end
在上述两种情况下,sensitive
属性会隐藏Chef日志中任何可能的密码输出。
最佳选择可能是查看user
资源。这有点复杂,因为您需要创建Password Shadow Hash(链接中提供了示例),但应予以考虑。