使用 chef 来 运行 bash passwd
Use chef to run bash passwd
我很难弄清楚如何使用 chef 来 运行 bash 命令(密码)
我知道如何设置 bash 资源块,但我该如何设置才能使用变量 password = 'abc123'
。在这个例子中,我想要为的用户是 adminblah
。
bash 'analytics_password' do
code <<-EOH
sudo passwd adminblah
EOH
end
我不确定如何将密码变量放入其中。
您可以通过多种方式设置用户密码。如果你想使用 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
上面的回显复制了输入然后确认密码,如果你在命令行上运行这个。
您也可以考虑使用 chpasswd
(如果可用):
bash 'analytics_password' do
code <<-EOH
echo "adminblah:#{password}" | chpasswd
EOH
sensitive true
end
在上述两种情况下,sensitive
属性 隐藏了 Chef 日志中密码的任何潜在输出。
最好的选择可能是查看 user
resource. This is a bit more complicated as you'll need to create a Password Shadow Hash(示例在 link 中提供),但应该考虑。
不知怎的,我发现这烦人的麻烦...
我想到了两个选项:
1。将 pwd 传递给 chpasswd
,它的作用是:
CHPASSWD(8)
NAME
chpasswd - update passwords in batch mode
SYNOPSIS
chpasswd [options]
DESCRIPTION
The chpasswd command reads a list of user name and password pairs from standard input and uses this information to update a group
of existing users. Each line is of the format:
user_name:password
因此,您的厨师食谱可能如下所示:
password = 'my-secret-password'
bash 'analytics_password' do
code <<-EOH
sudo sh -c 'echo "adminblah:#{password}" | chpasswd'
EOH
end
2。使用 user
资源
hash = `openssl passwd -1 -salt NCC #{password}`
hash = hash.gsub(/\n/, '')
user 'a user' do
username 'adminblah'
password hash.to_s
end
我希望至少有一种方法能奏效:)
此致,
亚雷克
我很难弄清楚如何使用 chef 来 运行 bash 命令(密码)
我知道如何设置 bash 资源块,但我该如何设置才能使用变量 password = 'abc123'
。在这个例子中,我想要为的用户是 adminblah
。
bash 'analytics_password' do
code <<-EOH
sudo passwd adminblah
EOH
end
我不确定如何将密码变量放入其中。
您可以通过多种方式设置用户密码。如果你想使用 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
上面的回显复制了输入然后确认密码,如果你在命令行上运行这个。
您也可以考虑使用 chpasswd
(如果可用):
bash 'analytics_password' do
code <<-EOH
echo "adminblah:#{password}" | chpasswd
EOH
sensitive true
end
在上述两种情况下,sensitive
属性 隐藏了 Chef 日志中密码的任何潜在输出。
最好的选择可能是查看 user
resource. This is a bit more complicated as you'll need to create a Password Shadow Hash(示例在 link 中提供),但应该考虑。
不知怎的,我发现这烦人的麻烦...
我想到了两个选项:
1。将 pwd 传递给 chpasswd
,它的作用是:
CHPASSWD(8)
NAME chpasswd - update passwords in batch mode
SYNOPSIS chpasswd [options]
DESCRIPTION The chpasswd command reads a list of user name and password pairs from standard input and uses this information to update a group of existing users. Each line is of the format:
user_name:password
因此,您的厨师食谱可能如下所示:
password = 'my-secret-password'
bash 'analytics_password' do
code <<-EOH
sudo sh -c 'echo "adminblah:#{password}" | chpasswd'
EOH
end
2。使用 user
资源
hash = `openssl passwd -1 -salt NCC #{password}`
hash = hash.gsub(/\n/, '')
user 'a user' do
username 'adminblah'
password hash.to_s
end
我希望至少有一种方法能奏效:)
此致, 亚雷克