Browse Source

updated for slave mode

tags/v2.0.0
Robin Thoni 6 years ago
parent
commit
de06d1798b

+ 17
- 0
docker-compose.yml View File

@@ -69,6 +69,23 @@ services:
69 69
         environment:
70 70
             - POSTGRES_SLAVE_INDEX=1
71 71
 
72
+    postgresql-slave2:
73
+        build: ./postgresql-slave
74
+        container_name: pdns-postgresql-slave2
75
+        networks:
76
+            pdns.internal.docker:
77
+                aliases:
78
+                    - postgresql-slave2.pdns.internal.docker
79
+        volumes:
80
+            - ./data/postgresql-slave2/data:/var/lib/postgresql/data
81
+            - ./data/postgresql-slave2/backup:/var/lib/postgresql/backup
82
+        ports:
83
+            - "127.0.0.1:34024:5432"
84
+        env_file:
85
+            - env
86
+        environment:
87
+            - POSTGRES_SLAVE_INDEX=2
88
+
72 89
 
73 90
 networks:
74 91
     pdns.internal.docker:

+ 20
- 5
env View File

@@ -1,12 +1,17 @@
1 1
 POSTGRES_HOST=postgresql.pdns.internal.docker
2 2
 POSTGRES_USER=poweradmin
3
-POSTGRES_PASSWORD=pg_password
3
+POSTGRES_PASSWORD=change_it
4 4
 POSTGRES_DB=poweradmin
5
+POSTGRES_REP_USER=replicator
6
+POSTGRES_REP_PASSWORD=change_it
7
+POSTGRES_REP_ALLOWED_HOST=127.0.0.1/32
8
+POSTGRES_RO_USER=poweradmin_ro
9
+POSTGRES_RO_PASSWORD=change_it
5 10
 
6 11
 PDNS_RECURSOR_HOST=pdns-recursor.pdns.internal.docker
7 12
 PDNS_API_KEY=change_it
8 13
 PDNS_WEBSERVER_PASSWORD=change_it
9
-PDNS_ALLOW_AXFR_IPS=127.0.0.1/8,172.16.0.0/12,192.168.0.0/16,10.0.0.0/8
14
+PDNS_ALLOW_AXFR_IPS=127.0.0.1/8
10 15
 PDNS_ALLOW_RECURSION=127.0.0.1/8,172.16.0.0/12,192.168.0.0/16,10.0.0.0/8
11 16
 PDNS_ALSO_NOTIFY=
12 17
 PDNS_ALLOW_NOTIFY_FROM=0.0.0.0/0,::/0
@@ -22,9 +27,19 @@ DNS_TTL=600
22 27
 POSTGRES_SLAVE_ENABLED_1=0
23 28
 POSTGRES_SLAVE_REP_HOST_1=master.example.com
24 29
 POSTGRES_SLAVE_REP_USER_1=replicator
25
-POSTGRES_SLAVE_REP_PASSWORD_1=pg_password
30
+POSTGRES_SLAVE_REP_PASSWORD_1=change_it
26 31
 POSTGRES_SLAVE_REP_PORT_1=34020
27 32
 POSTGRES_SLAVE_HOST_1=postgresql-slave1.pdns.internal.docker
28
-POSTGRES_SLAVE_USER_1=poweradmin
29
-POSTGRES_SLAVE_PASSWORD_1=pg_password
33
+POSTGRES_SLAVE_USER_1=poweradmin_ro
34
+POSTGRES_SLAVE_PASSWORD_1=change_it
30 35
 POSTGRES_SLAVE_DB_1=poweradmin
36
+
37
+POSTGRES_SLAVE_ENABLED_2=0
38
+POSTGRES_SLAVE_REP_HOST_2=master.example.com
39
+POSTGRES_SLAVE_REP_USER_2=replicator
40
+POSTGRES_SLAVE_REP_PASSWORD_2=change_it
41
+POSTGRES_SLAVE_REP_PORT_2=34020
42
+POSTGRES_SLAVE_HOST_2=postgresql-slave2.pdns.internal.docker
43
+POSTGRES_SLAVE_USER_2=poweradmin_ro
44
+POSTGRES_SLAVE_PASSWORD_2=change_it
45
+POSTGRES_SLAVE_DB_2=poweradmin

+ 18
- 2
pdns-recursor/vars-vars View File

@@ -2,6 +2,11 @@ POSTGRES_HOST
2 2
 POSTGRES_USER
3 3
 POSTGRES_PASSWORD
4 4
 POSTGRES_DB
5
+POSTGRES_REP_USER
6
+POSTGRES_REP_PASSWORD
7
+POSTGRES_REP_ALLOWED_HOST
8
+POSTGRES_RO_USER
9
+POSTGRES_RO_PASSWORD
5 10
 
6 11
 PDNS_RECURSOR_HOST
7 12
 PDNS_API_KEY
@@ -20,10 +25,21 @@ DNS_NS2
20 25
 DNS_TTL
21 26
 
22 27
 POSTGRES_SLAVE_ENABLED_1
23
-POSTGRES_SLAVE_MASTER_1
28
+POSTGRES_SLAVE_REP_HOST_1
24 29
 POSTGRES_SLAVE_REP_USER_1
25 30
 POSTGRES_SLAVE_REP_PASSWORD_1
26
-POSTGRES_SLAVE_PORT_1
31
+POSTGRES_SLAVE_REP_PORT_1
32
+POSTGRES_SLAVE_HOST_1
27 33
 POSTGRES_SLAVE_USER_1
28 34
 POSTGRES_SLAVE_PASSWORD_1
29 35
 POSTGRES_SLAVE_DB_1
36
+
37
+POSTGRES_SLAVE_ENABLED_2
38
+POSTGRES_SLAVE_REP_HOST_2
39
+POSTGRES_SLAVE_REP_USER_2
40
+POSTGRES_SLAVE_REP_PASSWORD_2
41
+POSTGRES_SLAVE_REP_PORT_2
42
+POSTGRES_SLAVE_HOST_2
43
+POSTGRES_SLAVE_USER_2
44
+POSTGRES_SLAVE_PASSWORD_2
45
+POSTGRES_SLAVE_DB_2

+ 4
- 4
pdns/config/pdns.conf View File

@@ -589,7 +589,7 @@ gpgsql-main-password=POSTGRES_PASSWORD
589 589
 gpgsql-main-dnssec=yes
590 590
 
591 591
 
592
-loglevel=9
593
-log-dns-details=yes
594
-log-dns-queries=yes
595
-query-logging=yes
592
+#loglevel=9
593
+#log-dns-details=yes
594
+#log-dns-queries=yes
595
+#query-logging=yes

+ 18
- 2
pdns/vars-vars View File

@@ -2,6 +2,11 @@ POSTGRES_HOST
2 2
 POSTGRES_USER
3 3
 POSTGRES_PASSWORD
4 4
 POSTGRES_DB
5
+POSTGRES_REP_USER
6
+POSTGRES_REP_PASSWORD
7
+POSTGRES_REP_ALLOWED_HOST
8
+POSTGRES_RO_USER
9
+POSTGRES_RO_PASSWORD
5 10
 
6 11
 PDNS_RECURSOR_HOST
7 12
 PDNS_API_KEY
@@ -20,10 +25,21 @@ DNS_NS2
20 25
 DNS_TTL
21 26
 
22 27
 POSTGRES_SLAVE_ENABLED_1
23
-POSTGRES_SLAVE_MASTER_1
28
+POSTGRES_SLAVE_REP_HOST_1
24 29
 POSTGRES_SLAVE_REP_USER_1
25 30
 POSTGRES_SLAVE_REP_PASSWORD_1
26
-POSTGRES_SLAVE_PORT_1
31
+POSTGRES_SLAVE_REP_PORT_1
32
+POSTGRES_SLAVE_HOST_1
27 33
 POSTGRES_SLAVE_USER_1
28 34
 POSTGRES_SLAVE_PASSWORD_1
29 35
 POSTGRES_SLAVE_DB_1
36
+
37
+POSTGRES_SLAVE_ENABLED_2
38
+POSTGRES_SLAVE_REP_HOST_2
39
+POSTGRES_SLAVE_REP_USER_2
40
+POSTGRES_SLAVE_REP_PASSWORD_2
41
+POSTGRES_SLAVE_REP_PORT_2
42
+POSTGRES_SLAVE_HOST_2
43
+POSTGRES_SLAVE_USER_2
44
+POSTGRES_SLAVE_PASSWORD_2
45
+POSTGRES_SLAVE_DB_2

+ 18
- 2
postgresql-slave/vars-vars View File

@@ -2,6 +2,11 @@ POSTGRES_HOST
2 2
 POSTGRES_USER
3 3
 POSTGRES_PASSWORD
4 4
 POSTGRES_DB
5
+POSTGRES_REP_USER
6
+POSTGRES_REP_PASSWORD
7
+POSTGRES_REP_ALLOWED_HOST
8
+POSTGRES_RO_USER
9
+POSTGRES_RO_PASSWORD
5 10
 
6 11
 PDNS_RECURSOR_HOST
7 12
 PDNS_API_KEY
@@ -20,10 +25,21 @@ DNS_NS2
20 25
 DNS_TTL
21 26
 
22 27
 POSTGRES_SLAVE_ENABLED_1
23
-POSTGRES_SLAVE_MASTER_1
28
+POSTGRES_SLAVE_REP_HOST_1
24 29
 POSTGRES_SLAVE_REP_USER_1
25 30
 POSTGRES_SLAVE_REP_PASSWORD_1
26
-POSTGRES_SLAVE_PORT_1
31
+POSTGRES_SLAVE_REP_PORT_1
32
+POSTGRES_SLAVE_HOST_1
27 33
 POSTGRES_SLAVE_USER_1
28 34
 POSTGRES_SLAVE_PASSWORD_1
29 35
 POSTGRES_SLAVE_DB_1
36
+
37
+POSTGRES_SLAVE_ENABLED_2
38
+POSTGRES_SLAVE_REP_HOST_2
39
+POSTGRES_SLAVE_REP_USER_2
40
+POSTGRES_SLAVE_REP_PASSWORD_2
41
+POSTGRES_SLAVE_REP_PORT_2
42
+POSTGRES_SLAVE_HOST_2
43
+POSTGRES_SLAVE_USER_2
44
+POSTGRES_SLAVE_PASSWORD_2
45
+POSTGRES_SLAVE_DB_2

+ 23
- 0
postgresql/Dockerfile View File

@@ -1,5 +1,28 @@
1 1
 FROM robinthoni/postgres-backup-multiarch:9.6
2 2
 
3
+ARG CONFIG_DIR=/etc/default/config-files/
4
+
3 5
 RUN rm -rf /var/log/*
4 6
 
7
+COPY ./vars-vars /etc/vars-vars
8
+
9
+COPY ./vars-files /etc/vars-files
10
+
11
+COPY ./common.sh /common.sh
12
+
13
+COPY ./run.sh /run.sh
14
+
15
+RUN mv -v /usr/share/postgresql/$PG_MAJOR/pg_hba.conf.sample /usr/share/postgresql/ \
16
+        && ln -sv ../pg_hba.conf.sample /usr/share/postgresql/$PG_MAJOR/
17
+
18
+RUN mkdir "${CONFIG_DIR}"
19
+
20
+COPY ./config/postgresql.conf "${CONFIG_DIR}"/postgresql.conf
21
+
22
+COPY ./config/pg_hba.conf "${CONFIG_DIR}"/pg_hba.conf
23
+
24
+COPY ./config/replication.sql "${CONFIG_DIR}"/replication.sql
25
+
26
+COPY ./config/readonly_user.sql "${CONFIG_DIR}"/readonly_user.sql
27
+
5 28
 COPY ./docker-entrypoint-initdb.d/ /docker-entrypoint-initdb.d

+ 41
- 0
postgresql/common.sh View File

@@ -0,0 +1,41 @@
1
+export CONFIG_DIR="/etc/default/config-files/"
2
+
3
+resolv_host()
4
+{
5
+  hostname="${1}"
6
+  ip=$(getent hosts "${hostname}" | cut -d' ' -f1)
7
+  echo "${ip}"
8
+}
9
+
10
+replace_var()
11
+{
12
+  file="${1}"
13
+  var="${2}"
14
+  sed -e "s?${var}?${!var}?g" -i "${file}"
15
+}
16
+
17
+replace_vars()
18
+{
19
+  file="${1}"
20
+  for var in $(cat /etc/vars-vars)
21
+  do
22
+    replace_var "${file}" "${var}"
23
+  done
24
+}
25
+
26
+replace_files()
27
+{
28
+  cat /etc/vars-files | while read line
29
+  do
30
+    filesrc="${CONFIG_DIR}$(echo "${line}" | awk '{print $1}')"
31
+    filedst=$(echo "${line}" | awk '{print $2}')
32
+    if [ -f "${filesrc}" ]
33
+    then
34
+      echo "Expanding file ${filesrc} to ${filedst}"
35
+      cp "${filesrc}" "${filedst}"
36
+      replace_vars "${filedst}"
37
+    else
38
+      echo "File ${filesrc} does not exist. Skipping."
39
+    fi
40
+  done
41
+}

+ 96
- 0
postgresql/config/pg_hba.conf View File

@@ -0,0 +1,96 @@
1
+# PostgreSQL Client Authentication Configuration File
2
+# ===================================================
3
+#
4
+# Refer to the "Client Authentication" section in the PostgreSQL
5
+# documentation for a complete description of this file.  A short
6
+# synopsis follows.
7
+#
8
+# This file controls: which hosts are allowed to connect, how clients
9
+# are authenticated, which PostgreSQL user names they can use, which
10
+# databases they can access.  Records take one of these forms:
11
+#
12
+# local      DATABASE  USER  METHOD  [OPTIONS]
13
+# host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
14
+# hostssl    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
15
+# hostnossl  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
16
+#
17
+# (The uppercase items must be replaced by actual values.)
18
+#
19
+# The first field is the connection type: "local" is a Unix-domain
20
+# socket, "host" is either a plain or SSL-encrypted TCP/IP socket,
21
+# "hostssl" is an SSL-encrypted TCP/IP socket, and "hostnossl" is a
22
+# plain TCP/IP socket.
23
+#
24
+# DATABASE can be "all", "sameuser", "samerole", "replication", a
25
+# database name, or a comma-separated list thereof. The "all"
26
+# keyword does not match "replication". Access to replication
27
+# must be enabled in a separate record (see example below).
28
+#
29
+# USER can be "all", a user name, a group name prefixed with "+", or a
30
+# comma-separated list thereof.  In both the DATABASE and USER fields
31
+# you can also write a file name prefixed with "@" to include names
32
+# from a separate file.
33
+#
34
+# ADDRESS specifies the set of hosts the record matches.  It can be a
35
+# host name, or it is made up of an IP address and a CIDR mask that is
36
+# an integer (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that
37
+# specifies the number of significant bits in the mask.  A host name
38
+# that starts with a dot (.) matches a suffix of the actual host name.
39
+# Alternatively, you can write an IP address and netmask in separate
40
+# columns to specify the set of hosts.  Instead of a CIDR-address, you
41
+# can write "samehost" to match any of the server's own IP addresses,
42
+# or "samenet" to match any address in any subnet that the server is
43
+# directly connected to.
44
+#
45
+# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
46
+# "ident", "peer", "pam", "ldap", "radius" or "cert".  Note that
47
+# "password" sends passwords in clear text; "md5" is preferred since
48
+# it sends encrypted passwords.
49
+#
50
+# OPTIONS are a set of options for the authentication in the format
51
+# NAME=VALUE.  The available options depend on the different
52
+# authentication methods -- refer to the "Client Authentication"
53
+# section in the documentation for a list of which options are
54
+# available for which authentication methods.
55
+#
56
+# Database and user names containing spaces, commas, quotes and other
57
+# special characters must be quoted.  Quoting one of the keywords
58
+# "all", "sameuser", "samerole" or "replication" makes the name lose
59
+# its special character, and just match a database or username with
60
+# that name.
61
+#
62
+# This file is read on server startup and when the postmaster receives
63
+# a SIGHUP signal.  If you edit the file on a running system, you have
64
+# to SIGHUP the postmaster for the changes to take effect.  You can
65
+# use "pg_ctl reload" to do that.
66
+
67
+# Put your actual configuration here
68
+# ----------------------------------
69
+#
70
+# If you want to allow non-local connections, you need to add more
71
+# "host" records.  In that case you will also need to make PostgreSQL
72
+# listen on a non-local interface via the listen_addresses
73
+# configuration parameter, or via the -i or -h command line switches.
74
+
75
+# CAUTION: Configuring the system for local "trust" authentication
76
+# allows any local user to connect as any PostgreSQL user, including
77
+# the database superuser.  If you do not trust all your local users,
78
+# use another authentication method.
79
+
80
+
81
+# TYPE  DATABASE        USER            ADDRESS                 METHOD
82
+
83
+# "local" is for Unix domain socket connections only
84
+local   all             all                                     trust
85
+# IPv4 local connections:
86
+host    all             all             127.0.0.1/32            trust
87
+# IPv6 local connections:
88
+host    all             all             ::1/128                 trust
89
+# Allow replication connections from localhost, by a user with the
90
+# replication privilege.
91
+#local   replication     postgres                                trust
92
+#host    replication     postgres        127.0.0.1/32            trust
93
+#host    replication     postgres        ::1/128                 trust
94
+
95
+host all all 0.0.0.0/0 md5
96
+host    replication     POSTGRES_REP_USER      POSTGRES_REP_ALLOWED_HOST           md5

+ 643
- 0
postgresql/config/postgresql.conf View File

@@ -0,0 +1,643 @@
1
+# -----------------------------
2
+# PostgreSQL configuration file
3
+# -----------------------------
4
+#
5
+# This file consists of lines of the form:
6
+#
7
+#   name = value
8
+#
9
+# (The "=" is optional.)  Whitespace may be used.  Comments are introduced with
10
+# "#" anywhere on a line.  The complete list of parameter names and allowed
11
+# values can be found in the PostgreSQL documentation.
12
+#
13
+# The commented-out settings shown in this file represent the default values.
14
+# Re-commenting a setting is NOT sufficient to revert it to the default value;
15
+# you need to reload the server.
16
+#
17
+# This file is read on server startup and when the server receives a SIGHUP
18
+# signal.  If you edit the file on a running system, you have to SIGHUP the
19
+# server for the changes to take effect, or use "pg_ctl reload".  Some
20
+# parameters, which are marked below, require a server shutdown and restart to
21
+# take effect.
22
+#
23
+# Any parameter can also be given as a command-line option to the server, e.g.,
24
+# "postgres -c log_connections=on".  Some parameters can be changed at run time
25
+# with the "SET" SQL command.
26
+#
27
+# Memory units:  kB = kilobytes        Time units:  ms  = milliseconds
28
+#                MB = megabytes                     s   = seconds
29
+#                GB = gigabytes                     min = minutes
30
+#                TB = terabytes                     h   = hours
31
+#                                                   d   = days
32
+
33
+
34
+#------------------------------------------------------------------------------
35
+# FILE LOCATIONS
36
+#------------------------------------------------------------------------------
37
+
38
+# The default values of these variables are driven from the -D command-line
39
+# option or PGDATA environment variable, represented here as ConfigDir.
40
+
41
+#data_directory = 'ConfigDir'		# use data in another directory
42
+					# (change requires restart)
43
+#hba_file = 'ConfigDir/pg_hba.conf'	# host-based authentication file
44
+					# (change requires restart)
45
+#ident_file = 'ConfigDir/pg_ident.conf'	# ident configuration file
46
+					# (change requires restart)
47
+
48
+# If external_pid_file is not explicitly set, no extra PID file is written.
49
+#external_pid_file = ''			# write an extra PID file
50
+					# (change requires restart)
51
+
52
+
53
+#------------------------------------------------------------------------------
54
+# CONNECTIONS AND AUTHENTICATION
55
+#------------------------------------------------------------------------------
56
+
57
+# - Connection Settings -
58
+
59
+listen_addresses = '*'
60
+					# comma-separated list of addresses;
61
+					# defaults to 'localhost'; use '*' for all
62
+					# (change requires restart)
63
+#port = 5432				# (change requires restart)
64
+max_connections = 100			# (change requires restart)
65
+#superuser_reserved_connections = 3	# (change requires restart)
66
+#unix_socket_directories = '/var/run/postgresql'	# comma-separated list of directories
67
+					# (change requires restart)
68
+#unix_socket_group = ''			# (change requires restart)
69
+#unix_socket_permissions = 0777		# begin with 0 to use octal notation
70
+					# (change requires restart)
71
+#bonjour = off				# advertise server via Bonjour
72
+					# (change requires restart)
73
+#bonjour_name = ''			# defaults to the computer name
74
+					# (change requires restart)
75
+
76
+# - Security and Authentication -
77
+
78
+#authentication_timeout = 1min		# 1s-600s
79
+#ssl = off				# (change requires restart)
80
+#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
81
+					# (change requires restart)
82
+#ssl_prefer_server_ciphers = on		# (change requires restart)
83
+#ssl_ecdh_curve = 'prime256v1'		# (change requires restart)
84
+#ssl_cert_file = 'server.crt'		# (change requires restart)
85
+#ssl_key_file = 'server.key'		# (change requires restart)
86
+#ssl_ca_file = ''			# (change requires restart)
87
+#ssl_crl_file = ''			# (change requires restart)
88
+#password_encryption = on
89
+#db_user_namespace = off
90
+#row_security = on
91
+
92
+# GSSAPI using Kerberos
93
+#krb_server_keyfile = ''
94
+#krb_caseins_users = off
95
+
96
+# - TCP Keepalives -
97
+# see "man 7 tcp" for details
98
+
99
+#tcp_keepalives_idle = 0		# TCP_KEEPIDLE, in seconds;
100
+					# 0 selects the system default
101
+#tcp_keepalives_interval = 0		# TCP_KEEPINTVL, in seconds;
102
+					# 0 selects the system default
103
+#tcp_keepalives_count = 0		# TCP_KEEPCNT;
104
+					# 0 selects the system default
105
+
106
+
107
+#------------------------------------------------------------------------------
108
+# RESOURCE USAGE (except WAL)
109
+#------------------------------------------------------------------------------
110
+
111
+# - Memory -
112
+
113
+shared_buffers = 128MB			# min 128kB
114
+					# (change requires restart)
115
+#huge_pages = try			# on, off, or try
116
+					# (change requires restart)
117
+#temp_buffers = 8MB			# min 800kB
118
+#max_prepared_transactions = 0		# zero disables the feature
119
+					# (change requires restart)
120
+# Caution: it is not advisable to set max_prepared_transactions nonzero unless
121
+# you actively intend to use prepared transactions.
122
+#work_mem = 4MB				# min 64kB
123
+#maintenance_work_mem = 64MB		# min 1MB
124
+#replacement_sort_tuples = 150000	# limits use of replacement selection sort
125
+#autovacuum_work_mem = -1		# min 1MB, or -1 to use maintenance_work_mem
126
+#max_stack_depth = 2MB			# min 100kB
127
+dynamic_shared_memory_type = posix	# the default is the first option
128
+					# supported by the operating system:
129
+					#   posix
130
+					#   sysv
131
+					#   windows
132
+					#   mmap
133
+					# use none to disable dynamic shared memory
134
+
135
+# - Disk -
136
+
137
+#temp_file_limit = -1			# limits per-process temp file space
138
+					# in kB, or -1 for no limit
139
+
140
+# - Kernel Resource Usage -
141
+
142
+#max_files_per_process = 1000		# min 25
143
+					# (change requires restart)
144
+#shared_preload_libraries = ''		# (change requires restart)
145
+
146
+# - Cost-Based Vacuum Delay -
147
+
148
+#vacuum_cost_delay = 0			# 0-100 milliseconds
149
+#vacuum_cost_page_hit = 1		# 0-10000 credits
150
+#vacuum_cost_page_miss = 10		# 0-10000 credits
151
+#vacuum_cost_page_dirty = 20		# 0-10000 credits
152
+#vacuum_cost_limit = 200		# 1-10000 credits
153
+
154
+# - Background Writer -
155
+
156
+#bgwriter_delay = 200ms			# 10-10000ms between rounds
157
+#bgwriter_lru_maxpages = 100		# 0-1000 max buffers written/round
158
+#bgwriter_lru_multiplier = 2.0		# 0-10.0 multiplier on buffers scanned/round
159
+#bgwriter_flush_after = 0		# 0 disables,
160
+					# default is 512kB on linux, 0 otherwise
161
+
162
+# - Asynchronous Behavior -
163
+
164
+#effective_io_concurrency = 1		# 1-1000; 0 disables prefetching
165
+#max_worker_processes = 8		# (change requires restart)
166
+#max_parallel_workers_per_gather = 0	# taken from max_worker_processes
167
+#old_snapshot_threshold = -1		# 1min-60d; -1 disables; 0 is immediate
168
+									# (change requires restart)
169
+#backend_flush_after = 0		# 0 disables, default is 0
170
+
171
+
172
+#------------------------------------------------------------------------------
173
+# WRITE AHEAD LOG
174
+#------------------------------------------------------------------------------
175
+
176
+# - Settings -
177
+
178
+wal_level = replica			# minimal, replica, or logical
179
+					# (change requires restart)
180
+#fsync = on				# flush data to disk for crash safety
181
+						# (turning this off can cause
182
+						# unrecoverable data corruption)
183
+#synchronous_commit = on		# synchronization level;
184
+					# off, local, remote_write, remote_apply, or on
185
+#wal_sync_method = fsync		# the default is the first option
186
+					# supported by the operating system:
187
+					#   open_datasync
188
+					#   fdatasync (default on Linux)
189
+					#   fsync
190
+					#   fsync_writethrough
191
+					#   open_sync
192
+#full_page_writes = on			# recover from partial page writes
193
+#wal_compression = off			# enable compression of full-page writes
194
+#wal_log_hints = off			# also do full page writes of non-critical updates
195
+					# (change requires restart)
196
+#wal_buffers = -1			# min 32kB, -1 sets based on shared_buffers
197
+					# (change requires restart)
198
+#wal_writer_delay = 200ms		# 1-10000 milliseconds
199
+#wal_writer_flush_after = 1MB		# 0 disables
200
+
201
+#commit_delay = 0			# range 0-100000, in microseconds
202
+#commit_siblings = 5			# range 1-1000
203
+
204
+# - Checkpoints -
205
+
206
+#checkpoint_timeout = 5min		# range 30s-1d
207
+#max_wal_size = 1GB
208
+#min_wal_size = 80MB
209
+#checkpoint_completion_target = 0.5	# checkpoint target duration, 0.0 - 1.0
210
+#checkpoint_flush_after = 0		# 0 disables,
211
+					# default is 256kB on linux, 0 otherwise
212
+#checkpoint_warning = 30s		# 0 disables
213
+
214
+# - Archiving -
215
+
216
+#archive_mode = off		# enables archiving; off, on, or always
217
+				# (change requires restart)
218
+#archive_command = ''		# command to use to archive a logfile segment
219
+				# placeholders: %p = path of file to archive
220
+				#               %f = file name only
221
+				# e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
222
+#archive_timeout = 0		# force a logfile segment switch after this
223
+				# number of seconds; 0 disables
224
+
225
+
226
+#------------------------------------------------------------------------------
227
+# REPLICATION
228
+#------------------------------------------------------------------------------
229
+
230
+# - Sending Server(s) -
231
+
232
+# Set these on the master and on any standby that will send replication data.
233
+
234
+max_wal_senders = 3		# max number of walsender processes
235
+				# (change requires restart)
236
+wal_keep_segments = 8		# in logfile segments, 16MB each; 0 disables
237
+#wal_sender_timeout = 60s	# in milliseconds; 0 disables
238
+
239
+#max_replication_slots = 0	# max number of replication slots
240
+				# (change requires restart)
241
+#track_commit_timestamp = off	# collect timestamp of transaction commit
242
+				# (change requires restart)
243
+
244
+# - Master Server -
245
+
246
+# These settings are ignored on a standby server.
247
+
248
+#synchronous_standby_names = ''	# standby servers that provide sync rep
249
+				# number of sync standbys and comma-separated list of application_name
250
+				# from standby(s); '*' = all
251
+#vacuum_defer_cleanup_age = 0	# number of xacts by which cleanup is delayed
252
+
253
+# - Standby Servers -
254
+
255
+# These settings are ignored on a master server.
256
+
257
+#hot_standby = off			# "on" allows queries during recovery
258
+					# (change requires restart)
259
+#max_standby_archive_delay = 30s	# max delay before canceling queries
260
+					# when reading WAL from archive;
261
+					# -1 allows indefinite delay
262
+#max_standby_streaming_delay = 30s	# max delay before canceling queries
263
+					# when reading streaming WAL;
264
+					# -1 allows indefinite delay
265
+#wal_receiver_status_interval = 10s	# send replies at least this often
266
+					# 0 disables
267
+#hot_standby_feedback = off		# send info from standby to prevent
268
+					# query conflicts
269
+#wal_receiver_timeout = 60s		# time that receiver waits for
270
+					# communication from master
271
+					# in milliseconds; 0 disables
272
+#wal_retrieve_retry_interval = 5s	# time to wait before retrying to
273
+					# retrieve WAL after a failed attempt
274
+
275
+
276
+#------------------------------------------------------------------------------
277
+# QUERY TUNING
278
+#------------------------------------------------------------------------------
279
+
280
+# - Planner Method Configuration -
281
+
282
+#enable_bitmapscan = on
283
+#enable_hashagg = on
284
+#enable_hashjoin = on
285
+#enable_indexscan = on
286
+#enable_indexonlyscan = on
287
+#enable_material = on
288
+#enable_mergejoin = on
289
+#enable_nestloop = on
290
+#enable_seqscan = on
291
+#enable_sort = on
292
+#enable_tidscan = on
293
+
294
+# - Planner Cost Constants -
295
+
296
+#seq_page_cost = 1.0			# measured on an arbitrary scale
297
+#random_page_cost = 4.0			# same scale as above
298
+#cpu_tuple_cost = 0.01			# same scale as above
299
+#cpu_index_tuple_cost = 0.005		# same scale as above
300
+#cpu_operator_cost = 0.0025		# same scale as above
301
+#parallel_tuple_cost = 0.1		# same scale as above
302
+#parallel_setup_cost = 1000.0	# same scale as above
303
+#min_parallel_relation_size = 8MB
304
+#effective_cache_size = 4GB
305
+
306
+# - Genetic Query Optimizer -
307
+
308
+#geqo = on
309
+#geqo_threshold = 12
310
+#geqo_effort = 5			# range 1-10
311
+#geqo_pool_size = 0			# selects default based on effort
312
+#geqo_generations = 0			# selects default based on effort
313
+#geqo_selection_bias = 2.0		# range 1.5-2.0
314
+#geqo_seed = 0.0			# range 0.0-1.0
315
+
316
+# - Other Planner Options -
317
+
318
+#default_statistics_target = 100	# range 1-10000
319
+#constraint_exclusion = partition	# on, off, or partition
320
+#cursor_tuple_fraction = 0.1		# range 0.0-1.0
321
+#from_collapse_limit = 8
322
+#join_collapse_limit = 8		# 1 disables collapsing of explicit
323
+					# JOIN clauses
324
+#force_parallel_mode = off
325
+
326
+
327
+#------------------------------------------------------------------------------
328
+# ERROR REPORTING AND LOGGING
329
+#------------------------------------------------------------------------------
330
+
331
+# - Where to Log -
332
+
333
+#log_destination = 'stderr'		# Valid values are combinations of
334
+					# stderr, csvlog, syslog, and eventlog,
335
+					# depending on platform.  csvlog
336
+					# requires logging_collector to be on.
337
+
338
+# This is used when logging to stderr:
339
+#logging_collector = off		# Enable capturing of stderr and csvlog
340
+					# into log files. Required to be on for
341
+					# csvlogs.
342
+					# (change requires restart)
343
+
344
+# These are only used if logging_collector is on:
345
+#log_directory = 'pg_log'		# directory where log files are written,
346
+					# can be absolute or relative to PGDATA
347
+#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'	# log file name pattern,
348
+					# can include strftime() escapes
349
+#log_file_mode = 0600			# creation mode for log files,
350
+					# begin with 0 to use octal notation
351
+#log_truncate_on_rotation = off		# If on, an existing log file with the
352
+					# same name as the new log file will be
353
+					# truncated rather than appended to.
354
+					# But such truncation only occurs on
355
+					# time-driven rotation, not on restarts
356
+					# or size-driven rotation.  Default is
357
+					# off, meaning append to existing files
358
+					# in all cases.
359
+#log_rotation_age = 1d			# Automatic rotation of logfiles will
360
+					# happen after that time.  0 disables.
361
+#log_rotation_size = 10MB		# Automatic rotation of logfiles will
362
+					# happen after that much log output.
363
+					# 0 disables.
364
+
365
+# These are relevant when logging to syslog:
366
+#syslog_facility = 'LOCAL0'
367
+#syslog_ident = 'postgres'
368
+#syslog_sequence_numbers = on
369
+#syslog_split_messages = on
370
+
371
+# This is only relevant when logging to eventlog (win32):
372
+#event_source = 'PostgreSQL'
373
+
374
+# - When to Log -
375
+
376
+#client_min_messages = notice		# values in order of decreasing detail:
377
+					#   debug5
378
+					#   debug4
379
+					#   debug3
380
+					#   debug2
381
+					#   debug1
382
+					#   log
383
+					#   notice
384
+					#   warning
385
+					#   error
386
+
387
+#log_min_messages = warning		# values in order of decreasing detail:
388
+					#   debug5
389
+					#   debug4
390
+					#   debug3
391
+					#   debug2
392
+					#   debug1
393
+					#   info
394
+					#   notice
395
+					#   warning
396
+					#   error
397
+					#   log
398
+					#   fatal
399
+					#   panic
400
+
401
+#log_min_error_statement = error	# values in order of decreasing detail:
402
+					#   debug5
403
+					#   debug4
404
+					#   debug3
405
+					#   debug2
406
+					#   debug1
407
+					#   info
408
+					#   notice
409
+					#   warning
410
+					#   error
411
+					#   log
412
+					#   fatal
413
+					#   panic (effectively off)
414
+
415
+#log_min_duration_statement = -1	# -1 is disabled, 0 logs all statements
416
+					# and their durations, > 0 logs only
417
+					# statements running at least this number
418
+					# of milliseconds
419
+
420
+
421
+# - What to Log -
422
+
423
+#debug_print_parse = off
424
+#debug_print_rewritten = off
425
+#debug_print_plan = off
426
+#debug_pretty_print = on
427
+#log_checkpoints = off
428
+#log_connections = off
429
+#log_disconnections = off
430
+#log_duration = off
431
+#log_error_verbosity = default		# terse, default, or verbose messages
432
+#log_hostname = off
433
+#log_line_prefix = ''			# special values:
434
+					#   %a = application name
435
+					#   %u = user name
436
+					#   %d = database name
437
+					#   %r = remote host and port
438
+					#   %h = remote host
439
+					#   %p = process ID
440
+					#   %t = timestamp without milliseconds
441
+					#   %m = timestamp with milliseconds
442
+					#   %n = timestamp with milliseconds (as a Unix epoch)
443
+					#   %i = command tag
444
+					#   %e = SQL state
445
+					#   %c = session ID
446
+					#   %l = session line number
447
+					#   %s = session start timestamp
448
+					#   %v = virtual transaction ID
449
+					#   %x = transaction ID (0 if none)
450
+					#   %q = stop here in non-session
451
+					#        processes
452
+					#   %% = '%'
453
+					# e.g. '<%u%%%d> '
454
+#log_lock_waits = off			# log lock waits >= deadlock_timeout
455
+#log_statement = 'none'			# none, ddl, mod, all
456
+#log_replication_commands = off
457
+#log_temp_files = -1			# log temporary files equal or larger
458
+					# than the specified size in kilobytes;
459
+					# -1 disables, 0 logs all temp files
460
+log_timezone = 'UTC'
461
+
462
+
463
+# - Process Title -
464
+
465
+#cluster_name = ''			# added to process titles if nonempty
466
+					# (change requires restart)
467
+#update_process_title = on
468
+
469
+
470
+#------------------------------------------------------------------------------
471
+# RUNTIME STATISTICS
472
+#------------------------------------------------------------------------------
473
+
474
+# - Query/Index Statistics Collector -
475
+
476
+#track_activities = on
477
+#track_counts = on
478
+#track_io_timing = off
479
+#track_functions = none			# none, pl, all
480
+#track_activity_query_size = 1024	# (change requires restart)
481
+#stats_temp_directory = 'pg_stat_tmp'
482
+
483
+
484
+# - Statistics Monitoring -
485
+
486
+#log_parser_stats = off
487
+#log_planner_stats = off
488
+#log_executor_stats = off
489
+#log_statement_stats = off
490
+
491
+
492
+#------------------------------------------------------------------------------
493
+# AUTOVACUUM PARAMETERS
494
+#------------------------------------------------------------------------------
495
+
496
+#autovacuum = on			# Enable autovacuum subprocess?  'on'
497
+					# requires track_counts to also be on.
498
+#log_autovacuum_min_duration = -1	# -1 disables, 0 logs all actions and
499
+					# their durations, > 0 logs only
500
+					# actions running at least this number
501
+					# of milliseconds.
502
+#autovacuum_max_workers = 3		# max number of autovacuum subprocesses
503
+					# (change requires restart)
504
+#autovacuum_naptime = 1min		# time between autovacuum runs
505
+#autovacuum_vacuum_threshold = 50	# min number of row updates before
506
+					# vacuum
507
+#autovacuum_analyze_threshold = 50	# min number of row updates before
508
+					# analyze
509
+#autovacuum_vacuum_scale_factor = 0.2	# fraction of table size before vacuum
510
+#autovacuum_analyze_scale_factor = 0.1	# fraction of table size before analyze
511
+#autovacuum_freeze_max_age = 200000000	# maximum XID age before forced vacuum
512
+					# (change requires restart)
513
+#autovacuum_multixact_freeze_max_age = 400000000	# maximum multixact age
514
+					# before forced vacuum
515
+					# (change requires restart)
516
+#autovacuum_vacuum_cost_delay = 20ms	# default vacuum cost delay for
517
+					# autovacuum, in milliseconds;
518
+					# -1 means use vacuum_cost_delay
519
+#autovacuum_vacuum_cost_limit = -1	# default vacuum cost limit for
520
+					# autovacuum, -1 means use
521
+					# vacuum_cost_limit
522
+
523
+
524
+#------------------------------------------------------------------------------
525
+# CLIENT CONNECTION DEFAULTS
526
+#------------------------------------------------------------------------------
527
+
528
+# - Statement Behavior -
529
+
530
+#search_path = '"$user", public'	# schema names
531
+#default_tablespace = ''		# a tablespace name, '' uses the default
532
+#temp_tablespaces = ''			# a list of tablespace names, '' uses
533
+					# only default tablespace
534
+#check_function_bodies = on
535
+#default_transaction_isolation = 'read committed'
536
+#default_transaction_read_only = off
537
+#default_transaction_deferrable = off
538
+#session_replication_role = 'origin'
539
+#statement_timeout = 0			# in milliseconds, 0 is disabled
540
+#lock_timeout = 0			# in milliseconds, 0 is disabled
541
+#idle_in_transaction_session_timeout = 0		# in milliseconds, 0 is disabled
542
+#vacuum_freeze_min_age = 50000000
543
+#vacuum_freeze_table_age = 150000000
544
+#vacuum_multixact_freeze_min_age = 5000000
545
+#vacuum_multixact_freeze_table_age = 150000000
546
+#bytea_output = 'hex'			# hex, escape
547
+#xmlbinary = 'base64'
548
+#xmloption = 'content'
549
+#gin_fuzzy_search_limit = 0
550
+#gin_pending_list_limit = 4MB
551
+
552
+# - Locale and Formatting -
553
+
554
+datestyle = 'iso, mdy'
555
+#intervalstyle = 'postgres'
556
+timezone = 'UTC'
557
+#timezone_abbreviations = 'Default'     # Select the set of available time zone
558
+					# abbreviations.  Currently, there are
559
+					#   Default
560
+					#   Australia (historical usage)
561
+					#   India
562
+					# You can create your own file in
563
+					# share/timezonesets/.
564
+#extra_float_digits = 0			# min -15, max 3
565
+#client_encoding = sql_ascii		# actually, defaults to database
566
+					# encoding
567
+
568
+# These settings are initialized by initdb, but they can be changed.
569
+lc_messages = 'en_US.utf8'			# locale for system error message
570
+					# strings
571
+lc_monetary = 'en_US.utf8'			# locale for monetary formatting
572
+lc_numeric = 'en_US.utf8'			# locale for number formatting
573
+lc_time = 'en_US.utf8'				# locale for time formatting
574
+
575
+# default configuration for text search
576
+default_text_search_config = 'pg_catalog.english'
577
+
578
+# - Other Defaults -
579
+
580
+#dynamic_library_path = '$libdir'
581
+#local_preload_libraries = ''
582
+#session_preload_libraries = ''
583
+
584
+
585
+#------------------------------------------------------------------------------
586
+# LOCK MANAGEMENT
587
+#------------------------------------------------------------------------------
588
+
589
+#deadlock_timeout = 1s
590
+#max_locks_per_transaction = 64		# min 10
591
+					# (change requires restart)
592
+#max_pred_locks_per_transaction = 64	# min 10
593
+					# (change requires restart)
594
+
595
+
596
+#------------------------------------------------------------------------------
597
+# VERSION/PLATFORM COMPATIBILITY
598
+#------------------------------------------------------------------------------
599
+
600
+# - Previous PostgreSQL Versions -
601
+
602
+#array_nulls = on
603
+#backslash_quote = safe_encoding	# on, off, or safe_encoding
604
+#default_with_oids = off
605
+#escape_string_warning = on
606
+#lo_compat_privileges = off
607
+#operator_precedence_warning = off
608
+#quote_all_identifiers = off
609
+#sql_inheritance = on
610
+#standard_conforming_strings = on
611
+#synchronize_seqscans = on
612
+
613
+# - Other Platforms and Clients -
614
+
615
+#transform_null_equals = off
616
+
617
+
618
+#------------------------------------------------------------------------------
619
+# ERROR HANDLING
620
+#------------------------------------------------------------------------------
621
+
622
+#exit_on_error = off			# terminate session on any error?
623
+#restart_after_crash = on		# reinitialize after backend crash?
624
+
625
+
626
+#------------------------------------------------------------------------------
627
+# CONFIG FILE INCLUDES
628
+#------------------------------------------------------------------------------
629
+
630
+# These options allow settings to be loaded from files other than the
631
+# default postgresql.conf.
632
+
633
+#include_dir = 'conf.d'			# include files ending in '.conf' from
634
+					# directory 'conf.d'
635
+#include_if_exists = 'exists.conf'	# include file only if it exists
636
+#include = 'special.conf'		# include file
637
+
638
+
639
+#------------------------------------------------------------------------------
640
+# CUSTOMIZED OPTIONS
641
+#------------------------------------------------------------------------------
642
+
643
+# Add settings for extensions here

+ 15
- 0
postgresql/config/readonly_user.sql View File

@@ -0,0 +1,15 @@
1
+CREATE USER POSTGRES_RO_USER
2
+    NOSUPERUSER
3
+    NOCREATEDB
4
+    NOCREATEROLE
5
+    LOGIN
6
+    ENCRYPTED PASSWORD 'POSTGRES_RO_PASSWORD';
7
+
8
+REVOKE ALL ON DATABASE POSTGRES_DB FROM POSTGRES_RO_USER;
9
+GRANT CONNECT ON DATABASE POSTGRES_DB TO POSTGRES_RO_USER;
10
+
11
+REVOKE ALL ON SCHEMA public FROM POSTGRES_RO_USER;
12
+GRANT USAGE ON SCHEMA public TO POSTGRES_RO_USER;
13
+
14
+GRANT SELECT ON ALL TABLES IN SCHEMA public TO POSTGRES_RO_USER;
15
+ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO POSTGRES_RO_USER;

+ 1
- 0
postgresql/config/replication.sql View File

@@ -0,0 +1 @@
1
+CREATE USER POSTGRES_REP_USER REPLICATION LOGIN ENCRYPTED PASSWORD 'POSTGRES_REP_PASSWORD';

+ 7
- 0
postgresql/run.sh View File

@@ -0,0 +1,7 @@
1
+#! /usr/bin/env bash
2
+
3
+. /common.sh
4
+
5
+replace_files
6
+
7
+docker-entrypoint.sh postgres

+ 4
- 0
postgresql/vars-files View File

@@ -0,0 +1,4 @@
1
+postgresql.conf /usr/share/postgresql/postgresql.conf.sample
2
+pg_hba.conf /usr/share/postgresql/pg_hba.conf.sample
3
+replication.sql /docker-entrypoint-initdb.d/replication.sql
4
+readonly_user.sql /docker-entrypoint-initdb.d/readonly_user.sql

+ 45
- 0
postgresql/vars-vars View File

@@ -0,0 +1,45 @@
1
+POSTGRES_HOST
2
+POSTGRES_USER
3
+POSTGRES_PASSWORD
4
+POSTGRES_DB
5
+POSTGRES_REP_USER
6
+POSTGRES_REP_PASSWORD
7
+POSTGRES_REP_ALLOWED_HOST
8
+POSTGRES_RO_USER
9
+POSTGRES_RO_PASSWORD
10
+
11
+PDNS_RECURSOR_HOST
12
+PDNS_API_KEY
13
+PDNS_WEBSERVER_PASSWORD
14
+PDNS_ALLOW_AXFR_IPS
15
+PDNS_ALLOW_RECURSION
16
+PDNS_ALSO_NOTIFY
17
+PDNS_ALLOW_NOTIFY_FROM
18
+PDNS_ALLOW_DNSUPDATE_FROM
19
+
20
+SESSION_KEY
21
+
22
+DNS_HOSTMASTER
23
+DNS_NS1
24
+DNS_NS2
25
+DNS_TTL
26
+
27
+POSTGRES_SLAVE_ENABLED_1
28
+POSTGRES_SLAVE_REP_HOST_1
29
+POSTGRES_SLAVE_REP_USER_1
30
+POSTGRES_SLAVE_REP_PASSWORD_1
31
+POSTGRES_SLAVE_REP_PORT_1
32
+POSTGRES_SLAVE_HOST_1
33
+POSTGRES_SLAVE_USER_1
34
+POSTGRES_SLAVE_PASSWORD_1
35
+POSTGRES_SLAVE_DB_1
36
+
37
+POSTGRES_SLAVE_ENABLED_2
38
+POSTGRES_SLAVE_REP_HOST_2
39
+POSTGRES_SLAVE_REP_USER_2
40
+POSTGRES_SLAVE_REP_PASSWORD_2
41
+POSTGRES_SLAVE_REP_PORT_2
42
+POSTGRES_SLAVE_HOST_2
43
+POSTGRES_SLAVE_USER_2
44
+POSTGRES_SLAVE_PASSWORD_2
45
+POSTGRES_SLAVE_DB_2

+ 18
- 2
poweradmin/vars-vars View File

@@ -2,6 +2,11 @@ POSTGRES_HOST
2 2
 POSTGRES_USER
3 3
 POSTGRES_PASSWORD
4 4
 POSTGRES_DB
5
+POSTGRES_REP_USER
6
+POSTGRES_REP_PASSWORD
7
+POSTGRES_REP_ALLOWED_HOST
8
+POSTGRES_RO_USER
9
+POSTGRES_RO_PASSWORD
5 10
 
6 11
 PDNS_RECURSOR_HOST
7 12
 PDNS_API_KEY
@@ -20,10 +25,21 @@ DNS_NS2
20 25
 DNS_TTL
21 26
 
22 27
 POSTGRES_SLAVE_ENABLED_1
23
-POSTGRES_SLAVE_MASTER_1
28
+POSTGRES_SLAVE_REP_HOST_1
24 29
 POSTGRES_SLAVE_REP_USER_1
25 30
 POSTGRES_SLAVE_REP_PASSWORD_1
26
-POSTGRES_SLAVE_PORT_1
31
+POSTGRES_SLAVE_REP_PORT_1
32
+POSTGRES_SLAVE_HOST_1
27 33
 POSTGRES_SLAVE_USER_1
28 34
 POSTGRES_SLAVE_PASSWORD_1
29 35
 POSTGRES_SLAVE_DB_1
36
+
37
+POSTGRES_SLAVE_ENABLED_2
38
+POSTGRES_SLAVE_REP_HOST_2
39
+POSTGRES_SLAVE_REP_USER_2
40
+POSTGRES_SLAVE_REP_PASSWORD_2
41
+POSTGRES_SLAVE_REP_PORT_2
42
+POSTGRES_SLAVE_HOST_2
43
+POSTGRES_SLAVE_USER_2
44
+POSTGRES_SLAVE_PASSWORD_2
45
+POSTGRES_SLAVE_DB_2

+ 1
- 1
update_vars.sh View File

@@ -1,7 +1,7 @@
1 1
 #! /usr/bin/env sh
2 2
 
3 3
 vars=$(cat env | cut -d= -f1)
4
-for docker in pdns pdns-recursor poweradmin postgresql-slave
4
+for docker in pdns pdns-recursor poweradmin postgresql-slave postgresql
5 5
 do
6 6
   echo "${vars}" > "./${docker}/vars-vars"
7 7
 done

Loading…
Cancel
Save