0
我有下面的配方用于创建一些用户,将它们添加到组并将密码设置为在第一次登录时过期。如何有条件地在厨师中运行一块资源或配方?
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代码?
谢谢, 米歇尔。
如果存在if_not子句,通知是否也会触发? – Mikyjpeg
我可以使用if子句,问题是我需要从bash命令中设置一些东西(属性,属性或环境变量)才能在调用以下资源之前进行检查。其实唯一的问题是第三个资源,到期日期,至于用户我可以使用警卫队和组更改是可以重置为初始情况。也许我应该为该特定行为编写自定义资源? – Mikyjpeg
我认为您将使用Ruby语法的if语句混淆了chef资源的'not_if' /'only_if'保护块/字符串功能。 – coderanger