【发布时间】:2016-09-27 05:56:11
【问题描述】:
我有以下方法用于创建一些用户,将它们添加到组中并将密码设置为在首次登录时过期。
search(:users, '*:*').each do |user|
userPassword = "$1$scmdevop$ZDTyqia9RXSrpHGK75FjN/"
user user['id'] do
comment user['comment']
home user['home']
shell user['shell']
manage_home true
password "#{userPassword}"
end
if user['sudo'] then
group "#{node.default["sudogroup"]}" do
action :modify
members user['id']
append true
end
end
if (user['resetPassword'] == nil) || (user['resetPassword']) then
bash 'setExporation' do
code 'chage -d 0 ' + user['id']
user 'root'
end
end
end
问题在于,通过这种方式,它将继续重置密码并在每次运行时设置 espiration,因此我试图找到有条件的方法。我想使用下面的命令来检查用户是否存在
grep -qs #{user["id"]} /etc/passwd
问题是我只能在第一个资源中使用 not_if 子句,因为在那之后用户已经被清楚地创建了。有没有办法让三个资源的整个块都以 shell 退出代码为条件?
谢谢, 米歇尔。
【问题讨论】:
标签: ruby chef-infra