Skip to content

Instantly share code, notes, and snippets.

@exoer
Forked from coderanger/db_server.rb
Created July 4, 2011 17:58
Show Gist options
  • Save exoer/1063712 to your computer and use it in GitHub Desktop.
Save exoer/1063712 to your computer and use it in GitHub Desktop.
Create postgres users and databases from Chef
include_recipe "postgresql::server90"
# inspiration from
# https://gist.github.com/637579
execute "create-root-user" do
code = <<-EOH
psql -U postgres -c "select * from pg_user where usename='root'" | grep -c root
EOH
command "createuser -U postgres -s root"
not_if code
end
execute "create-database-user" do
code = <<-EOH
psql -U postgres -c "select * from pg_user where usename='#{node[:dbuser]}'" | grep -c #{node[:dbuser]}
EOH
command "createuser -U postgres -sw #{node[:dbuser]}"
not_if code
end
execute "create-database" do
exists = <<-EOH
psql -U postgres -c "select * from pg_database WHERE datname='#{node[:dbname]}'" | grep -c #{node[:dbname]}
EOH
command "createdb -U postgres -O #{node[:dbuser]} -E utf8 -T template0 #{node[:dbname]}"
not_if exists
end
# content in node.json
#{
# "postgresql" : {
# "version": 9.0,
# "dir": "/etc/postgresql/9.0/main"
# },
# "dbuser": "user",
# "dbname": "db"
#}
@gavvvr
Copy link

gavvvr commented Oct 29, 2017

Only r.entries[0]['count'] == '0' worked out for me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment