使用 Chef 设置基本的 postgres 数据库
Setup basic postgres database using Chef
我正在尝试使用 Chef 建立一个非常基本的 postgres 数据库,但缺乏 Chef 经验来理解我在超市的食谱自述文件中找到的文档:
https://supermarket.chef.io/cookbooks/postgresql
我需要的厨师相当于以下内容:
- 创建用户
- 正在创建该用户拥有的数据库
- 对 pg_hba.conf 进行小改动,使其需要密码
- 启动数据库
我希望能够 google 像这样基本的示例,但目前迷失在配置 postgresql 的所有可能方法中,我找不到起点。
如果另一本食谱更有意义,请解释原因。
我们目前没有关于创建 DB 用户和数据库的好答案。旧的 database
食谱曾经处理过这个问题,但是代码太难维护了,我们觉得有义务在没有替代计划的情况下弃用它。它仍然存在并且应该可以正常工作,但它不是一个令人愉快的体验:( 对于 hba 配置,您可以使用 postgresql
说明书和一些节点属性来控制它,并且类似地为您处理启动数据库服务。
我从这里给出的 Gist 那里得到了帮助: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
我正在尝试使用 Chef 建立一个非常基本的 postgres 数据库,但缺乏 Chef 经验来理解我在超市的食谱自述文件中找到的文档: https://supermarket.chef.io/cookbooks/postgresql
我需要的厨师相当于以下内容:
- 创建用户
- 正在创建该用户拥有的数据库
- 对 pg_hba.conf 进行小改动,使其需要密码
- 启动数据库
我希望能够 google 像这样基本的示例,但目前迷失在配置 postgresql 的所有可能方法中,我找不到起点。 如果另一本食谱更有意义,请解释原因。
我们目前没有关于创建 DB 用户和数据库的好答案。旧的 database
食谱曾经处理过这个问题,但是代码太难维护了,我们觉得有义务在没有替代计划的情况下弃用它。它仍然存在并且应该可以正常工作,但它不是一个令人愉快的体验:( 对于 hba 配置,您可以使用 postgresql
说明书和一些节点属性来控制它,并且类似地为您处理启动数据库服务。
我从这里给出的 Gist 那里得到了帮助: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