Initial Chef repository
This commit is contained in:
148
cookbooks/postgresql/recipes/config_initdb.rb
Normal file
148
cookbooks/postgresql/recipes/config_initdb.rb
Normal file
@@ -0,0 +1,148 @@
|
||||
#
|
||||
# Cookbook Name:: postgresql
|
||||
# Recipe:: config_initdb
|
||||
# Author:: David Crane (<davidc@donorschoose.org>)
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#######
|
||||
# Load the locale_date_order() and select_default_timezone(tzdir)
|
||||
# methods from libraries/default.rb
|
||||
::Chef::Recipe.send(:include, Opscode::PostgresqlHelpers)
|
||||
|
||||
#######
|
||||
# This recipe is derived from the setup_config() source code in the
|
||||
# PostgreSQL initdb utility. It determines postgresql.conf settings that
|
||||
# conform to the system's locale and timezone configuration, and also
|
||||
# sets the error reporting and logging settings.
|
||||
#
|
||||
# See http://doxygen.postgresql.org/initdb_8c_source.html for the
|
||||
# original initdb source code.
|
||||
#
|
||||
# By examining the system configuration, this recipe will set the
|
||||
# following node.default['postgresql']['config'] attributes:
|
||||
#
|
||||
# - Locale and Formatting -
|
||||
# * datestyle
|
||||
# * lc_messages
|
||||
# * lc_monetary
|
||||
# * lc_numeric
|
||||
# * lc_time
|
||||
# * default_text_search_config
|
||||
#
|
||||
# - Timezone Conversion -
|
||||
# * log_timezone
|
||||
# * timezone
|
||||
#
|
||||
# In addition, this recipe will recommend the same error reporting and
|
||||
# logging settings that initdb provided. These settings do differ from
|
||||
# the PostgreSQL default settings, which would log to stderr only. The
|
||||
# initdb settings rotate 7 days of log files named postgresql-Mon.log,
|
||||
# etc. through these node.default['postgresql']['config'] attributes:
|
||||
#
|
||||
# - Where to Log -
|
||||
# * log_destination = 'stderr'
|
||||
# * log_directory = 'pg_log'
|
||||
# * log_filename = 'postgresql-%a.log'
|
||||
# (Default was: postgresql-%Y-%m-%d_%H%M%S.log)
|
||||
# * logging_collector = true # on
|
||||
# (Turned on to capture stderr logging and redirect into log files)
|
||||
# (Default was: false # off)
|
||||
# * log_rotation_age = 1d
|
||||
# * log_rotation_size = 0
|
||||
# (Default was: 10MB)
|
||||
# * log_truncate_on_rotation = true # on
|
||||
# (Default was: false # off)
|
||||
|
||||
#######
|
||||
# Locale Configuration
|
||||
|
||||
# See libraries/default.rb for the locale_date_order() method.
|
||||
node.default['postgresql']['config']['datestyle'] = "iso, #{locale_date_order()}"
|
||||
|
||||
# According to the locale(1) manpage, the locale settings are determined
|
||||
# by environment variables according to the following precedence:
|
||||
# LC_ALL > (LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) > LANG.
|
||||
|
||||
node.default['postgresql']['config']['lc_messages'] =
|
||||
[ ENV['LC_ALL'], ENV['LC_MESSAGES'], ENV['LANG'] ].compact.first
|
||||
|
||||
node.default['postgresql']['config']['lc_monetary'] =
|
||||
[ ENV['LC_ALL'], ENV['LC_MONETARY'], ENV['LANG'] ].compact.first
|
||||
|
||||
node.default['postgresql']['config']['lc_numeric'] =
|
||||
[ ENV['LC_ALL'], ENV['LC_NUMERIC'], ENV['LANG'] ].compact.first
|
||||
|
||||
node.default['postgresql']['config']['lc_time'] =
|
||||
[ ENV['LC_ALL'], ENV['LC_TIME'], ENV['LANG'] ].compact.first
|
||||
|
||||
node.default['postgresql']['config']['default_text_search_config'] =
|
||||
case ENV['LANG']
|
||||
when /da_.*/
|
||||
'pg_catalog.danish'
|
||||
when /nl_.*/
|
||||
'pg_catalog.dutch'
|
||||
when /en_.*/
|
||||
'pg_catalog.english'
|
||||
when /fi_.*/
|
||||
'pg_catalog.finnish'
|
||||
when /fr_.*/
|
||||
'pg_catalog.french'
|
||||
when /de_.*/
|
||||
'pg_catalog.german'
|
||||
when /hu_.*/
|
||||
'pg_catalog.hungarian'
|
||||
when /it_.*/
|
||||
'pg_catalog.italian'
|
||||
when /no_.*/
|
||||
'pg_catalog.norwegian'
|
||||
when /pt_.*/
|
||||
'pg_catalog.portuguese'
|
||||
when /ro_.*/
|
||||
'pg_catalog.romanian'
|
||||
when /ru_.*/
|
||||
'pg_catalog.russian'
|
||||
when /es_.*/
|
||||
'pg_catalog.spanish'
|
||||
when /sv_.*/
|
||||
'pg_catalog.swedish'
|
||||
when /tr_.*/
|
||||
'pg_catalog.turkish'
|
||||
else
|
||||
nil
|
||||
end
|
||||
|
||||
#######
|
||||
# Timezone Configuration
|
||||
|
||||
# Determine the name of the system's default timezone and specify node
|
||||
# defaults for the postgresql.cof settings. If the timezone cannot be
|
||||
# identified, do as initdb would do: leave it unspecified so PostgreSQL
|
||||
# uses it's internal default of GMT.
|
||||
tzdirpath = pg_TZDIR() # See libraries/default.rb
|
||||
default_timezone = select_default_timezone(tzdirpath) # See libraries/default.rb
|
||||
if !default_timezone.nil?
|
||||
node.default['postgresql']['config']['log_timezone'] = default_timezone
|
||||
node.default['postgresql']['config']['timezone'] = default_timezone
|
||||
end
|
||||
|
||||
#######
|
||||
# - Where to Log -
|
||||
node.default['postgresql']['config']['log_destination'] = 'stderr'
|
||||
node.default['postgresql']['config']['log_directory'] = 'pg_log'
|
||||
node.default['postgresql']['config']['log_filename'] = 'postgresql-%a.log'
|
||||
node.default['postgresql']['config']['logging_collector'] = true # on
|
||||
node.default['postgresql']['config']['log_rotation_age'] = '1d'
|
||||
node.default['postgresql']['config']['log_rotation_size'] = 0
|
||||
node.default['postgresql']['config']['log_truncate_on_rotation'] = true # on
|
||||
Reference in New Issue
Block a user