我使用以下配方来创建一些用户,将它们添加到一个组并将密码设置为在首次登录时到期。
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
问题在于,通过这种方式,它将继续重置密码并在每次运行时设置呼吸,因此我试图找到如何有条件地进行调整。我想使用以下命令检查用户是否存在
grep -qs #{user["id"]} /etc/passwd
问题是我只能在第一个资源中使用not_if子句,因为之后用户已经清楚地创建了。有没有办法让三个资源的整个块都以shell退出代码为条件?
谢谢, 米歇尔。
答案 0 :(得分:0)
您可能需要的是来自用户资源的通知,但这可能有点难,因为这会触发任何更改,而不仅仅是创建。这里的根本问题是,您所陈述的期望行为以程序性术语表达,而不是以融合状态表示。最好的方法可能是构建一个自定义资源来隐藏其中的一些逻辑,但是你想要的就是你想要的if
语句。