我正在尝试使用Chef建立一个非常基本的postgres数据库,但缺乏Chef的经验来理解我在超市的食谱自述文件中找到的文档: https://supermarket.chef.io/cookbooks/postgresql
我需要的是厨师相当于以下内容:
我希望能够谷歌这样一个基本的例子,但目前迷失在所有可能的配置postgresql的方法,我没有找到一个起点。 如果另一本食谱更有意义,请解释原因。
答案 0 :(得分:2)
我们目前没有一个很好的答案来建立数据库用户和数据库。旧的database
食谱用于处理,但代码是如此不可维护,我们觉得有义务在没有替换计划的情况下弃用它。它仍然存在并且应该是可行的,但它不是一种令人愉快的体验:(对于hba配置,您可以使用postgresql
食谱和一些节点属性来控制它,并且类似地将为您启动数据库服务。
答案 1 :(得分:1)
我在这里得到了要旨的帮助:https://gist.github.com/exoer/1063712/01e9b166add182c14b54508ef5950152063f6de2:
#
# Cookbook Name:: atari
# Recipe:: db_server
#
# Copyright 2010, Atari
#
# All rights reserved
#
include_recipe "postgresql::server"
r = package "ruby-pg" do
package_name "libpgsql-ruby"
action :nothing
end
r.run_action(:upgrade)
# Snippet from opscode to reload gems
require 'rubygems'
Gem.clear_paths
require "pg"
execute "create-database-user" do
command "createuser -U postgres -SDRw youruser"
only_if do
c = PGconn.connect(:user=>'postgres', :dbname=>'postgres')
r = c.exec("SELECT COUNT(*) FROM pg_user WHERE usename='youruser'")
r.entries[0]['count']
end
end
execute "create-database" do
command "createdb -U postgres -O youruser-E utf8 -T template0 yourdb"
only_if do
c = PGconn.connect(:user=>'postgres', :dbname=>'postgres')
r = c.exec("SELECT COUNT(*) FROM pg_database WHERE datname='yourdb'")
r.entries[0]['count']
end
end
还检查了postgres文档:https://www.postgresql.org/docs/9.5/app-createdb.html
最后,我编辑了dev-cookbook / recipes / db.rb并创建了用户:
# d - user is allowed to create database
# l - user is allowed to log in
# s - user is a superuser
execute "create-database-user" do
command "createuser -U postgres -dls db_user"
end
并数据库:
# U - user that is used to connect to psql
# O - owner of the database
# E - database encoding
execute "create-database" do
command "createdb -U postgres -O db_user db_name -E 'utf8'"
end