目次

CentOS KickstartでPostgreSQLを自動セットアップする

%postスクリプト

CentOS Kickstart 設定ファイルから抜粋してます。

# create working directory
mkdir /tmp/postgres
 
# create logging directory
mkdir /tmp/postgres/logs
 
cd /tmp/postgres
cp -r /root/postgres/* .
bash /tmp/postgres/postgres-setup.sh 2>&1 | tee /tmp/postgres/logs/postgres-setup.log

postgres-setup.sh

#!/bin/bash
 
chmod -R 777 /tmp/postgres
 
# initialize database
/etc/rc.d/init.d/postgresql initdb
 
# copy config file
\cp -rf /tmp/postgres/postgresql.conf /var/lib/pgsql/data/postgresql.conf
\cp -rf /tmp/postgres/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf
\cp -rf /tmp/postgres/etc/init.d/postgresql /etc/init.d/postgresql
 
 
# start service
/etc/rc.d/init.d/postgresql start
 
 
# set database password
sudo -u postgres bash /tmp/postgres/postgres-create-database.sh
 
chkconfig postgresql on

postgres-create-database.sh

postgresユーザで実行されます。 自分の環境ではportを変えていますが、デフォルトのポートの場合は-pのオプションは不要です。 またパスワードはマスクかけてます。

#/bin/bash
 
# set password
psql -p ???? -c "alter user postgres with password '??????????????'" 
 
# create user
createuser -p ???? --superuser --createdb --createrole scpostgres
 
# set password
psql -p ???? -c "alter user scpostgres with password '??????????????'" 
 
# create schema
psql -p ???? -c "create schema scmain authorization scpostgres"
psql -p ???? -c "alter user scpostgres set search_path to scmain"
 
exit

postgresql.conf

外部からの接続を許可します。

listen_addresses = '*'		# what IP address(es) to listen on;

デフォルトからportを変えます。

port = ?????				# (change requires restart)

ログの出力形式を変えます。

log_line_prefix = '%t %u %d '			# special values:

エンコーディングをsjisに変えます。

client_encoding = sjis		# actually, defaults to database

pg_hba.conf

以下の行を追加します。

host    all         all         0.0.0.0/0             trust

etc/init.d/postgresql

portを変更したものに置き換えます。