diff --git a/docs/README.rst b/docs/README.rst index e271e7a..ab98b40 100644 --- a/docs/README.rst +++ b/docs/README.rst @@ -83,31 +83,15 @@ packaged init script, job or unit. Further information: https://blog.tyk.nu/blog/freebsd-jails-and-sysv-ipc/ -``postgres.server.image`` -^^^^^^^^^^^^^^^^^^^^^^^^^ - -Installs the PostgreSQL server package on Linux, prepares the DB cluster and starts the server by issuing -raw ``pg_ctl`` command. The ``postgres:bake_image`` Pillar toggles this behaviour. For example: +**Running inside a container** (using Packer, Docker or similar tools), when OS ``init`` process +is not available to start the service and enable it on "boot", set pillar value: .. code:: yaml postgres: bake_image: True -If set ``True``, then it becomes possible to fully provision PostgreSQL with all supported entities -from ``postgres.manage`` state during the build ("baking") of AMI / VM / Container images (using -Packer, Docker or similar tools), i.e. when OS ``init`` process is not available to start the -service and enable it on "boot" of resulting appliance. - -Also it allows to make Docker images with PostgreSQL using functionality being available since Salt -2016.11.0 release: - -.. code:: console - - salt 'minion.with.docker' dockerng.sls_build my-postgres base=centos/systemd mods=postgres - -If a lookup dictionary or Pillar has ``postgres:bake_image`` set ``False`` (this is default), it is -equivalent of applying ``postgres.server`` state. +This toggles starting PostgreSQL daemon by issuing raw ``pg_ctl`` or ``pg_ctlcluster`` command. ``postgres.upstream`` ^^^^^^^^^^^^^^^^^^^^^ diff --git a/postgres/codenamemap.yaml b/postgres/codenamemap.yaml index 078d181..0b022a8 100644 --- a/postgres/codenamemap.yaml +++ b/postgres/codenamemap.yaml @@ -35,6 +35,7 @@ prepare_cluster: pgcommand: pg_createcluster {{ version }} {{ cluster_name }} -d user: root + bake_image_run_cmd: pg_ctlcluster {{ version }} {{ cluster_name }} start {% endmacro %} diff --git a/postgres/defaults.yaml b/postgres/defaults.yaml index 79c03be..63af504 100644 --- a/postgres/defaults.yaml +++ b/postgres/defaults.yaml @@ -9,6 +9,7 @@ postgres: version: '10' pkg: postgresql pkgs_extra: [] + pkgs_deps: [] pkg_client: postgresql-client pkg_dev: postgresql-devel pkg_dev_deps: [] @@ -76,6 +77,7 @@ postgres: sysrc: false bake_image: false + bake_image_run_cmd: pg_ctl start fromrepo: '' diff --git a/postgres/osfamilymap.yaml b/postgres/osfamilymap.yaml index bde79cc..8933ce6 100644 --- a/postgres/osfamilymap.yaml +++ b/postgres/osfamilymap.yaml @@ -12,6 +12,7 @@ Arch: pkg_dev: postgresql Debian: + pkgs_deps: ['python3-apt'] pkg_repo: humanname: PostgreSQL Official Repository key_url: 'https://www.postgresql.org/media/keys/ACCC4CF8.asc' diff --git a/postgres/server/image.sls b/postgres/server/image.sls index 67b2411..2de0886 100644 --- a/postgres/server/image.sls +++ b/postgres/server/image.sls @@ -5,20 +5,22 @@ {%- if postgres.bake_image %} -include: - - postgres.server - # An attempt to start PostgreSQL with `pg_ctl` - -postgresql-start: +postgresql-running: cmd.run: - - name: pg_ctl -D {{ postgres.data_dir }} -l logfile start + - name: {{ postgres.bake_image_run_cmd }} - runas: {{ postgres.user }} - unless: - ps -p $(head -n 1 {{ postgres.data_dir }}/postmaster.pid) 2>/dev/null - require: - file: postgresql-pg_hba +postgresql-service-reload: + module.run: + - name: test.true + - require: + - cmd: postgresql-running + # Try to enable PostgreSQL in "manual" way postgresql-enable: @@ -34,12 +36,6 @@ postgresql-enable: - name: 'true' {%- endif %} - require: - - cmd: postgresql-start - -{%- else %} - -postgresql-start: - test.show_notification: - - text: The 'postgres:bake_image' Pillar is disabled (set to 'False'). + - cmd: postgresql-running {%- endif %} diff --git a/postgres/upstream.sls b/postgres/upstream.sls index f38c96e..0fe9ff9 100644 --- a/postgres/upstream.sls +++ b/postgres/upstream.sls @@ -17,10 +17,17 @@ postgresql-profile: - defaults: bin_dir: {{ postgres.bin_dir }} {%- endif %} + +postgresql-pkg-deps: + pkg.installed: + - pkgs: {{ postgres.pkgs_deps }} + # Add upstream repository for your distro postgresql-repo: pkgrepo.managed: {{- format_kwargs(postgres.pkg_repo) }} + - require: + - pkg: postgresql-pkg-deps {%- else -%}