diff options
author | Mark Asselstine <mark.asselstine@windriver.com> | 2018-03-29 15:29:13 -0400 |
---|---|---|
committer | Bruce Ashfield <bruce.ashfield@windriver.com> | 2018-04-03 23:23:43 -0400 |
commit | 8aa49d991123a954b404686cead6b58dc6de9242 (patch) | |
tree | 704261b38e135fc94228d8682c95676c46cdf3b1 /meta-openstack/recipes-dbs/postgresql/postgresql/postgresql-init | |
parent | 7db67a8eced8399d198bfa2cd6b9995f8842ead2 (diff) | |
download | meta-cloud-services-8aa49d991123a954b404686cead6b58dc6de9242.tar.gz |
postgresql: don't attempt to start the DB before we setup the DB
When we boot the first time the postgresql service will [FAIL] and
the following error is reported:
pg_ctl[288]: pg_ctl: directory "/etc/postgresql/data" does not exist
This is a result of the service being started before a call to
postgresql's initdb is made on the PGDATA directory, usually made by
the package's default 'postgresql-setup' or our 'postgresql-init'
scripts.
We split our 'postgresql-init' script into two, the first part which
does the 'initdb' can be executed as part of the postgresql.service
'ExecStartPre' allowing the postgresql.service to not fail. The
remainder of 'postgresql-init' script is executed as before, via the
postgresql-init.service on first boot.
This change also fixes some of the first boot startup races that was
preventing some of the openstack '*-init' services which do DB
configuration for openstack components from executing correctly.
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Diffstat (limited to 'meta-openstack/recipes-dbs/postgresql/postgresql/postgresql-init')
-rw-r--r-- | meta-openstack/recipes-dbs/postgresql/postgresql/postgresql-init | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/meta-openstack/recipes-dbs/postgresql/postgresql/postgresql-init b/meta-openstack/recipes-dbs/postgresql/postgresql/postgresql-init index cc7b13e..e1f9484 100644 --- a/meta-openstack/recipes-dbs/postgresql/postgresql/postgresql-init +++ b/meta-openstack/recipes-dbs/postgresql/postgresql/postgresql-init | |||
@@ -8,24 +8,30 @@ DB_USER=%DB_USER% | |||
8 | DB_PASSWORD=%DB_PASSWORD% | 8 | DB_PASSWORD=%DB_PASSWORD% |
9 | DATA_DIR=%DB_DATADIR% | 9 | DATA_DIR=%DB_DATADIR% |
10 | 10 | ||
11 | if [ ! -e $DATA_DIR ]; then | 11 | initdb(){ |
12 | mkdir -p $DATA_DIR | 12 | if [ ! -e $DATA_DIR ]; then |
13 | chown postgres $DATA_DIR | 13 | mkdir -p $DATA_DIR |
14 | fi | 14 | chown postgres $DATA_DIR |
15 | fi | ||
15 | 16 | ||
16 | if [ -e $DATA_DIR/PG_VERSION ]; then | 17 | if [ -e $DATA_DIR/PG_VERSION ]; then |
17 | # the database has already been initialized, return | 18 | # the database has already been initialized, return |
18 | exit 0 | 19 | exit 0 |
19 | fi | 20 | fi |
21 | |||
22 | # Create the DB | ||
23 | sudo -u postgres initdb -D $DATA_DIR | ||
20 | 24 | ||
21 | # Create the DB | 25 | # Allow readers/writers by IP |
22 | sudo -u postgres initdb -D $DATA_DIR | 26 | echo "listen_addresses = '*'" >> $DATA_DIR/postgresql.conf |
27 | echo "host all all ${CONTROLLER_IP}/32 trust" >> $DATA_DIR/pg_hba.conf | ||
28 | echo "host all all ${COMPUTE_IP}/32 trust" >> $DATA_DIR/pg_hba.conf | ||
29 | } | ||
23 | 30 | ||
24 | # Allow readers/writers by IP | 31 | if [ "$1" == "initdb" ]; then |
25 | echo "listen_addresses = '*'" >> $DATA_DIR/postgresql.conf | 32 | initdb |
26 | echo "host all all ${CONTROLLER_IP}/32 trust" >> $DATA_DIR/pg_hba.conf | 33 | exit 0 |
27 | echo "host all all ${COMPUTE_IP}/32 trust" >> $DATA_DIR/pg_hba.conf | 34 | fi |
28 | systemctl restart postgresql | ||
29 | 35 | ||
30 | count=0 | 36 | count=0 |
31 | done=0 | 37 | done=0 |