小编svs*_*svs的帖子

如何在厨师食谱中使用not_if

我是厨师的新手所以我对条件not_if如何在执行资源中工作感到困惑.据我所知,如果命令返回0或true,它告诉厨师不要执行命令; 但是,在我的代码中,它显然仍在运行命令.

以下代码应该创建用户(及其密码)和数据库; 但是,如果用户和数据库已存在,则不应执行任何操作.用户,数据库和密码在属性中定义.以下是我的代码:

execute "create-user" do

        code = <<-EOH
        psql -U postgres -c "select * from pg_user where usename='#{node[:user]}'" | grep -c #{node[:user]}
        EOH
        user "postgres"
        command "createuser -s #{node[:user]}"
        not_if code
end


execute "set-user-password" do
    user "postgres"
    command  "psql -U postgres -d template1 -c \"ALTER USER #{node[:user]} WITH PASSWORD '#{node[:password]}';\""
end


execute "create-database" do
    exists = <<-EOH
    psql -U postgres -c "select * from pg_database WHERE datname='#{node[:database]}'" | grep -c #{node[:database]}}
    EOH
    user "postgres"
    command "createdb #{node[:database]}"
   not_if …
Run Code Online (Sandbox Code Playgroud)

ruby postgresql chef-infra

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

chef-infra ×1

postgresql ×1

ruby ×1