Skip to content

Instantly share code, notes, and snippets.

@patsanch
Forked from exoer/db_server.rb
Created January 16, 2016 01:05
Show Gist options
  • Save patsanch/d997fce2c1b9f45ff452 to your computer and use it in GitHub Desktop.
Save patsanch/d997fce2c1b9f45ff452 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"
#}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment