首页 > 解决方案 > 使用 chef 运行 bash passwd

问题描述

我很难弄清楚如何使用 chef 来运行 bash 命令(passwd)

我知道如何设置 bash 资源块,但我如何设置它,以便将变量password = 'abc123'. 我要为其做的用户就是adminblah这个例子。

bash 'analytics_password' do
  code <<-EOH
    sudo passwd adminblah
  EOH
end

我不确定如何将密码变量放入其中。

标签: bashchef-infrapasswd

解决方案


有几种方法可以实现设置用户密码。如果您想使用该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 复制输入然后确认密码。

您还可以查看 using chpasswd(如果可用):

bash 'analytics_password' do
  code <<-EOH
    echo "adminblah:#{password}" | chpasswd
  EOH
  sensitive true
end

在上述两种情况下,该sensitive属性都会在 Chef 日志中隐藏任何潜在的密码输出。

最好的选择可能是查看user资源。这有点复杂,因为您需要创建密码影子哈希(链接中提供了示例),但应该考虑。


推荐阅读