* debian/pg_createconfig_patroni: New script.
* debian/dcs.yml, debian/config.yml.in: New configuration templates. * debian/patroni.install: Install new script to /usr/bin and configuration templates to /etc/patroni.
This commit is contained in:
parent
0a80df53c0
commit
8cb3cbda6e
4
debian/changelog
vendored
4
debian/changelog
vendored
|
@ -7,6 +7,10 @@ patroni (1.5.1-1) UNRELEASED; urgency=medium
|
||||||
* debian/patches/consul_import.patch: Likewise.
|
* debian/patches/consul_import.patch: Likewise.
|
||||||
* debian/patches/coverage_binary.patch: Likewise.
|
* debian/patches/coverage_binary.patch: Likewise.
|
||||||
* debian/patches/startup_scripts.patch: Likewise.
|
* debian/patches/startup_scripts.patch: Likewise.
|
||||||
|
* debian/pg_createconfig_patroni: New script.
|
||||||
|
* debian/dcs.yml, debian/config.yml.in: New configuration templates.
|
||||||
|
* debian/patroni.install: Install new script to /usr/bin and configuration
|
||||||
|
templates to /etc/patroni.
|
||||||
|
|
||||||
-- Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org> Fri, 02 Nov 2018 19:23:09 +0100
|
-- Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org> Fri, 02 Nov 2018 19:23:09 +0100
|
||||||
|
|
||||||
|
|
99
debian/config.yml.in
vendored
Normal file
99
debian/config.yml.in
vendored
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
scope: "@VERSION@-@CLUSTER@"
|
||||||
|
namespace: "/postgresql-common/"
|
||||||
|
name: @HOSTNAME@
|
||||||
|
|
||||||
|
#etcd:
|
||||||
|
# host: 127.0.0.1:2379
|
||||||
|
|
||||||
|
#consul:
|
||||||
|
# host: http://127.0.0.1:8500
|
||||||
|
# host: https://127.0.0.1:8500
|
||||||
|
|
||||||
|
#zookeeper:
|
||||||
|
# hosts: 127.0.0.1:2181
|
||||||
|
|
||||||
|
restapi:
|
||||||
|
listen: @HOSTIP@:8008
|
||||||
|
connect_address: @HOSTIP@:8008
|
||||||
|
# certfile: /etc/ssl/certs/ssl-cert-snakeoil.pem
|
||||||
|
# keyfile: /etc/ssl/private/ssl-cert-snakeoil.key
|
||||||
|
# authentication:
|
||||||
|
# username: username
|
||||||
|
# password: password
|
||||||
|
|
||||||
|
# ctl:
|
||||||
|
# insecure: false # Allow connections to SSL sites without certs
|
||||||
|
# certfile: /etc/ssl/certs/ssl-cert-snakeoil.pem
|
||||||
|
# cacert: /etc/ssl/certs/ssl-cacert-snakeoil.pem
|
||||||
|
|
||||||
|
bootstrap:
|
||||||
|
# Custom bootstrap method
|
||||||
|
method: pg_createcluster
|
||||||
|
pg_createcluster:
|
||||||
|
command: /usr/share/patroni/pg_createcluster_patroni
|
||||||
|
|
||||||
|
# this section will be written into Etcd:/<namespace>/<scope>/config after initializing new cluster
|
||||||
|
# and all other cluster members will use it as a `global configuration`
|
||||||
|
dcs:
|
||||||
|
ttl: 30
|
||||||
|
loop_wait: 10
|
||||||
|
retry_timeout: 10
|
||||||
|
maximum_lag_on_failover: 1048576
|
||||||
|
# master_start_timeout: 300
|
||||||
|
# synchronous_mode: false
|
||||||
|
# standby_cluster:
|
||||||
|
# host: 127.0.0.1
|
||||||
|
# port: 1111
|
||||||
|
# primary_slot_name: patroni
|
||||||
|
postgresql:
|
||||||
|
use_pg_rewind: true
|
||||||
|
# use_slots: true
|
||||||
|
parameters:
|
||||||
|
# wal_level: hot_standby
|
||||||
|
# hot_standby: "on"
|
||||||
|
# wal_keep_segments: 8
|
||||||
|
# max_wal_senders: 10
|
||||||
|
# max_replication_slots: 10
|
||||||
|
# wal_log_hints: "on"
|
||||||
|
# archive_mode: "on"
|
||||||
|
# archive_timeout: 1800s
|
||||||
|
# archive_command: mkdir -p ../wal_archive && test ! -f ../wal_archive/%f && cp %p ../wal_archive/%f
|
||||||
|
# recovery_conf:
|
||||||
|
# restore_command: cp ../wal_archive/%f %p
|
||||||
|
|
||||||
|
# some desired options for 'initdb'
|
||||||
|
initdb: # Note: It needs to be a list (some options need values, others are switches)
|
||||||
|
- encoding: UTF8
|
||||||
|
- data-checksums
|
||||||
|
|
||||||
|
pg_hba: # Add following lines to pg_hba.conf after running 'initdb'
|
||||||
|
- host replication replicator 127.0.0.1/32 md5
|
||||||
|
- host all all 0.0.0.0/0 md5
|
||||||
|
# - hostssl all all 0.0.0.0/0 md5
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
# Custom clone method
|
||||||
|
create_replica_method:
|
||||||
|
- pg_clonecluster
|
||||||
|
pg_clonecluster:
|
||||||
|
command: /usr/share/patroni/pg_clonecluster_patroni
|
||||||
|
|
||||||
|
listen: @HOSTIP@:5432
|
||||||
|
connect_address: @HOSTIP@:5432
|
||||||
|
data_dir: /var/lib/postgresql/@VERSION@/@CLUSTER@
|
||||||
|
bin_dir: /usr/lib/postgresql/@VERSION@/bin
|
||||||
|
config_dir: /etc/postgresql/@VERSION@/@CLUSTER@
|
||||||
|
pgpass: /etc/patroni/pgpass
|
||||||
|
authentication:
|
||||||
|
replication:
|
||||||
|
username: replicator
|
||||||
|
password: rep-pass
|
||||||
|
# superuser:
|
||||||
|
# username: postgres
|
||||||
|
# password: zalando
|
||||||
|
parameters:
|
||||||
|
unix_socket_directories: '/var/run/postgresql/'
|
||||||
|
# Emulate default Debian/Ubuntu logging
|
||||||
|
logging_collector: 'on'
|
||||||
|
log_directory: '/var/log/postgresql'
|
||||||
|
log_filename: 'postgresql-@VERSION@-@CLUSTER@.log'
|
9
debian/dcs.yml
vendored
Normal file
9
debian/dcs.yml
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#etcd:
|
||||||
|
# host: 127.0.0.1:2379
|
||||||
|
|
||||||
|
#consul:
|
||||||
|
# host: http://127.0.0.1:8500
|
||||||
|
# host: https://127.0.0.1:8500
|
||||||
|
|
||||||
|
zookeeper:
|
||||||
|
hosts: 127.0.0.1:2181
|
3
debian/patroni.install
vendored
3
debian/patroni.install
vendored
|
@ -3,5 +3,8 @@ extras/startup-scripts/patroni.service lib/systemd/system
|
||||||
extras/startup-scripts/patroni@.service lib/systemd/system
|
extras/startup-scripts/patroni@.service lib/systemd/system
|
||||||
debian/pg_clonecluster_patroni usr/share/patroni
|
debian/pg_clonecluster_patroni usr/share/patroni
|
||||||
debian/pg_createcluster_patroni usr/share/patroni
|
debian/pg_createcluster_patroni usr/share/patroni
|
||||||
|
debian/pg_createconfig_patroni usr/bin
|
||||||
|
debian/dcs.yml etc/patroni
|
||||||
|
debian/config.yml.in etc/patroni
|
||||||
debian/tmp/usr/lib
|
debian/tmp/usr/lib
|
||||||
debian/tmp/usr/bin
|
debian/tmp/usr/bin
|
||||||
|
|
81
debian/pg_createconfig_patroni
vendored
Executable file
81
debian/pg_createconfig_patroni
vendored
Executable file
|
@ -0,0 +1,81 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for i in "$@"
|
||||||
|
do
|
||||||
|
case $i in
|
||||||
|
--scope=*)
|
||||||
|
SCOPE="${i#*=}"
|
||||||
|
shift # past argument=value
|
||||||
|
;;
|
||||||
|
--hostip=*)
|
||||||
|
HOSTIP="${i#*=}"
|
||||||
|
shift # past argument=value
|
||||||
|
;;
|
||||||
|
--force)
|
||||||
|
FORCE="y"
|
||||||
|
shift # past argument=value
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# unknown option
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$SCOPE" ]; then
|
||||||
|
echo "Required option --scope missing"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# support both '-' and '/' as separator
|
||||||
|
if [ $(echo $SCOPE | grep -- -) ]
|
||||||
|
then
|
||||||
|
VERSION=$(echo $SCOPE | sed -e 's/-.*//')
|
||||||
|
CLUSTER=$(echo $SCOPE | sed -e 's/.*-//')
|
||||||
|
else
|
||||||
|
VERSION=$(echo $SCOPE | sed -e 's/\/.*//')
|
||||||
|
CLUSTER=$(echo $SCOPE | sed -e 's/.*\///')
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check DCS configuration
|
||||||
|
if [ ! -f /etc/patroni/dcs.yml ]; then
|
||||||
|
echo "DCS not configured yet, edit /etc/patroni/dcs.yml"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
grep -v "^#" /etc/patroni/dcs.yml | grep -v "^$" > /dev/null 2>&1
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
echo "DCS not configured yet, edit /etc/patroni/dcs.yml"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONFIG_FILE=/etc/patroni/${VERSION}-${CLUSTER}.yml
|
||||||
|
|
||||||
|
if [ -f $CONFIG_FILE -a -z "$FORCE" ]; then
|
||||||
|
echo "Patroni configuration file already exists"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
rm -f $CONFIG_FILE
|
||||||
|
touch $CONFIG_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
HOSTNAME=$(hostname)
|
||||||
|
|
||||||
|
# set default ipv4 address in case it was not provided
|
||||||
|
if [ -z "$HOSTIP" ]; then
|
||||||
|
HOSTIP=$(ip -4 route get 8.8.8.8 | grep ^8.8.8.8 | sed s/.*src.//)
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "scope: \"$VERSION-$CLUSTER\"" >> $CONFIG_FILE
|
||||||
|
echo "namespace: \"/postgresql-common/\"" >> $CONFIG_FILE
|
||||||
|
echo "name: \"$HOSTNAME\"" >> $CONFIG_FILE
|
||||||
|
echo "" >> $CONFIG_FILE
|
||||||
|
|
||||||
|
# add DCS configuration
|
||||||
|
cat /etc/patroni/dcs.yml >> $CONFIG_FILE
|
||||||
|
echo "" >> $CONFIG_FILE
|
||||||
|
|
||||||
|
# add remaining patroni configuration from template
|
||||||
|
cat /etc/patroni/config.yml.in | \
|
||||||
|
sed -e s/@VERSION@/${VERSION}/ \
|
||||||
|
-e s/@CLUSTER@/${CLUSTER}/ \
|
||||||
|
-e s/@HOSTIP@/${HOSTIP}/ \
|
||||||
|
>> $CONFIG_FILE
|
Loading…
Reference in a new issue