Skip to content

PostgreSQL

Overview

PostgreSQL is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance.


Deployment

sb install postgres

Usage

Info

The default password for this container is password4321 To easily manage the db, consider adminer

Role Defaults

Use the Inventory to customize variables. (1)

  1. This role supports multiple instances via postgres_instances.

    Example override

    postgres_role_web_subdomain: "custom"
    

    Applies to all instances of postgres

    postgres2_web_subdomain: "custom2"
    

    Applies to the instance named postgres2

    Avoid overriding variables ending in _default

    When overriding variables that end in _default (like postgres_docker_envs_default), you replace the entire default configuration. Future updates that add new default values will not be applied to your setup, potentially breaking functionality.

    Instead, use the corresponding _custom variable (like postgres_docker_envs_custom) to add your changes. Custom values are merged with defaults, ensuring you receive updates.

postgres_instances
# Type: list
postgres_instances: ["postgres"]

Example Override

# Type: list
postgres_instances: ["postgres", "postgres2"]
postgres_role_docker_env_passwordpostgres2_docker_env_password
# Type: string
postgres_role_docker_env_password: "password4321"
# Type: string
postgres2_docker_env_password: "password4321"
postgres_role_docker_env_userpostgres2_docker_env_user
# Type: string
postgres_role_docker_env_user: "{{ user.name }}"
# Type: string
postgres2_docker_env_user: "{{ user.name }}"
postgres_role_docker_env_dbpostgres2_docker_env_db
# Type: string
postgres_role_docker_env_db: "saltbox"
# Type: string
postgres2_docker_env_db: "saltbox"

Container

postgres_role_docker_containerpostgres2_docker_container
# Type: string
postgres_role_docker_container: "{{ postgres_name }}"
# Type: string
postgres2_docker_container: "{{ postgres_name }}"

Image

postgres_role_docker_image_pullpostgres2_docker_image_pull
# Type: bool (true/false)
postgres_role_docker_image_pull: true
# Type: bool (true/false)
postgres2_docker_image_pull: true
postgres_role_docker_image_tagpostgres2_docker_image_tag
# Type: string
postgres_role_docker_image_tag: "17-alpine"
# Type: string
postgres2_docker_image_tag: "17-alpine"
postgres_role_docker_image_repopostgres2_docker_image_repo
# Type: string
postgres_role_docker_image_repo: "postgres"
# Type: string
postgres2_docker_image_repo: "postgres"
postgres_role_docker_imagepostgres2_docker_image
# Type: string
postgres_role_docker_image: "{{ lookup('role_var', '_docker_image_repo', role='postgres') }}:{{ lookup('role_var', '_docker_image_tag', role='postgres') }}"
# Type: string
postgres2_docker_image: "{{ lookup('role_var', '_docker_image_repo', role='postgres') }}:{{ lookup('role_var', '_docker_image_tag', role='postgres') }}"

Envs

postgres_role_docker_envs_defaultpostgres2_docker_envs_default
# Type: dict
postgres_role_docker_envs_default:
  TZ: "{{ tz }}"
  PGDATA: "/data"
  POSTGRES_PASSWORD: "{{ lookup('role_var', '_docker_env_password', role='postgres') }}"
  POSTGRES_USER: "{{ lookup('role_var', '_docker_env_user', role='postgres') }}"
  POSTGRES_DB: "{{ lookup('role_var', '_docker_env_db', role='postgres') }}"
# Type: dict
postgres2_docker_envs_default:
  TZ: "{{ tz }}"
  PGDATA: "/data"
  POSTGRES_PASSWORD: "{{ lookup('role_var', '_docker_env_password', role='postgres') }}"
  POSTGRES_USER: "{{ lookup('role_var', '_docker_env_user', role='postgres') }}"
  POSTGRES_DB: "{{ lookup('role_var', '_docker_env_db', role='postgres') }}"
postgres_role_docker_envs_custompostgres2_docker_envs_custom
# Type: dict
postgres_role_docker_envs_custom: {}
# Type: dict
postgres2_docker_envs_custom: {}

Volumes

postgres_role_docker_volumes_defaultpostgres2_docker_volumes_default
# Type: list
postgres_role_docker_volumes_default:
  - "{{ postgres_role_paths_location }}:/data"
  - "/etc/passwd:/etc/passwd:ro"
# Type: list
postgres2_docker_volumes_default:
  - "{{ postgres_role_paths_location }}:/data"
  - "/etc/passwd:/etc/passwd:ro"
postgres_role_docker_volumes_custompostgres2_docker_volumes_custom
# Type: list
postgres_role_docker_volumes_custom: []
# Type: list
postgres2_docker_volumes_custom: []

Hostname

postgres_role_docker_hostnamepostgres2_docker_hostname
# Type: string
postgres_role_docker_hostname: "{{ postgres_name }}"
# Type: string
postgres2_docker_hostname: "{{ postgres_name }}"

Networks

postgres_role_docker_networks_aliaspostgres2_docker_networks_alias
# Type: string
postgres_role_docker_networks_alias: "{{ postgres_name }}"
# Type: string
postgres2_docker_networks_alias: "{{ postgres_name }}"
postgres_role_docker_networks_defaultpostgres2_docker_networks_default
# Type: list
postgres_role_docker_networks_default: []
# Type: list
postgres2_docker_networks_default: []
postgres_role_docker_networks_custompostgres2_docker_networks_custom
# Type: list
postgres_role_docker_networks_custom: []
# Type: list
postgres2_docker_networks_custom: []

Restart Policy

postgres_role_docker_restart_policypostgres2_docker_restart_policy
# Type: string
postgres_role_docker_restart_policy: unless-stopped
# Type: string
postgres2_docker_restart_policy: unless-stopped

State

postgres_role_docker_statepostgres2_docker_state
# Type: string
postgres_role_docker_state: started
# Type: string
postgres2_docker_state: started

User

postgres_role_docker_userpostgres2_docker_user
# Type: string
postgres_role_docker_user: "{{ uid }}:{{ gid }}"
# Type: string
postgres2_docker_user: "{{ uid }}:{{ gid }}"

SHM size

postgres_role_docker_shm_sizepostgres2_docker_shm_size
# Type: string
postgres_role_docker_shm_size: "128M"
# Type: string
postgres2_docker_shm_size: "128M"

The following advanced options are available via create_docker_container but are not defined in the role. See: docker_container module

Resource Limits

postgres_role_docker_blkio_weightpostgres2_docker_blkio_weight
# Type: int
postgres_role_docker_blkio_weight:
# Type: int
postgres2_docker_blkio_weight:
postgres_role_docker_cpu_periodpostgres2_docker_cpu_period
# Type: int
postgres_role_docker_cpu_period:
# Type: int
postgres2_docker_cpu_period:
postgres_role_docker_cpu_quotapostgres2_docker_cpu_quota
# Type: int
postgres_role_docker_cpu_quota:
# Type: int
postgres2_docker_cpu_quota:
postgres_role_docker_cpu_sharespostgres2_docker_cpu_shares
# Type: int
postgres_role_docker_cpu_shares:
# Type: int
postgres2_docker_cpu_shares:
postgres_role_docker_cpuspostgres2_docker_cpus
# Type: string
postgres_role_docker_cpus:
# Type: string
postgres2_docker_cpus:
postgres_role_docker_cpuset_cpuspostgres2_docker_cpuset_cpus
# Type: string
postgres_role_docker_cpuset_cpus:
# Type: string
postgres2_docker_cpuset_cpus:
postgres_role_docker_cpuset_memspostgres2_docker_cpuset_mems
# Type: string
postgres_role_docker_cpuset_mems:
# Type: string
postgres2_docker_cpuset_mems:
postgres_role_docker_kernel_memorypostgres2_docker_kernel_memory
# Type: string
postgres_role_docker_kernel_memory:
# Type: string
postgres2_docker_kernel_memory:
postgres_role_docker_memorypostgres2_docker_memory
# Type: string
postgres_role_docker_memory:
# Type: string
postgres2_docker_memory:
postgres_role_docker_memory_reservationpostgres2_docker_memory_reservation
# Type: string
postgres_role_docker_memory_reservation:
# Type: string
postgres2_docker_memory_reservation:
postgres_role_docker_memory_swappostgres2_docker_memory_swap
# Type: string
postgres_role_docker_memory_swap:
# Type: string
postgres2_docker_memory_swap:
postgres_role_docker_memory_swappinesspostgres2_docker_memory_swappiness
# Type: int
postgres_role_docker_memory_swappiness:
# Type: int
postgres2_docker_memory_swappiness:

Security & Devices

postgres_role_docker_cap_droppostgres2_docker_cap_drop
# Type: list
postgres_role_docker_cap_drop:
# Type: list
postgres2_docker_cap_drop:
postgres_role_docker_cgroupns_modepostgres2_docker_cgroupns_mode
# Type: string
postgres_role_docker_cgroupns_mode:
# Type: string
postgres2_docker_cgroupns_mode:
postgres_role_docker_device_cgroup_rulespostgres2_docker_device_cgroup_rules
# Type: list
postgres_role_docker_device_cgroup_rules:
# Type: list
postgres2_docker_device_cgroup_rules:
postgres_role_docker_device_read_bpspostgres2_docker_device_read_bps
# Type: list
postgres_role_docker_device_read_bps:
# Type: list
postgres2_docker_device_read_bps:
postgres_role_docker_device_read_iopspostgres2_docker_device_read_iops
# Type: list
postgres_role_docker_device_read_iops:
# Type: list
postgres2_docker_device_read_iops:
postgres_role_docker_device_requestspostgres2_docker_device_requests
# Type: list
postgres_role_docker_device_requests:
# Type: list
postgres2_docker_device_requests:
postgres_role_docker_device_write_bpspostgres2_docker_device_write_bps
# Type: list
postgres_role_docker_device_write_bps:
# Type: list
postgres2_docker_device_write_bps:
postgres_role_docker_device_write_iopspostgres2_docker_device_write_iops
# Type: list
postgres_role_docker_device_write_iops:
# Type: list
postgres2_docker_device_write_iops:
postgres_role_docker_devicespostgres2_docker_devices
# Type: list
postgres_role_docker_devices:
# Type: list
postgres2_docker_devices:
postgres_role_docker_devices_defaultpostgres2_docker_devices_default
# Type: string
postgres_role_docker_devices_default:
# Type: string
postgres2_docker_devices_default:
postgres_role_docker_groupspostgres2_docker_groups
# Type: list
postgres_role_docker_groups:
# Type: list
postgres2_docker_groups:
postgres_role_docker_privilegedpostgres2_docker_privileged
# Type: bool (true/false)
postgres_role_docker_privileged:
# Type: bool (true/false)
postgres2_docker_privileged:
postgres_role_docker_security_optspostgres2_docker_security_opts
# Type: list
postgres_role_docker_security_opts:
# Type: list
postgres2_docker_security_opts:
postgres_role_docker_userns_modepostgres2_docker_userns_mode
# Type: string
postgres_role_docker_userns_mode:
# Type: string
postgres2_docker_userns_mode:

Networking

postgres_role_docker_dns_optspostgres2_docker_dns_opts
# Type: list
postgres_role_docker_dns_opts:
# Type: list
postgres2_docker_dns_opts:
postgres_role_docker_dns_search_domainspostgres2_docker_dns_search_domains
# Type: list
postgres_role_docker_dns_search_domains:
# Type: list
postgres2_docker_dns_search_domains:
postgres_role_docker_dns_serverspostgres2_docker_dns_servers
# Type: list
postgres_role_docker_dns_servers:
# Type: list
postgres2_docker_dns_servers:
postgres_role_docker_domainnamepostgres2_docker_domainname
# Type: string
postgres_role_docker_domainname:
# Type: string
postgres2_docker_domainname:
postgres_role_docker_exposed_portspostgres2_docker_exposed_ports
# Type: list
postgres_role_docker_exposed_ports:
# Type: list
postgres2_docker_exposed_ports:
postgres_role_docker_hostspostgres2_docker_hosts
# Type: dict
postgres_role_docker_hosts:
# Type: dict
postgres2_docker_hosts:
postgres_role_docker_hosts_use_commonpostgres2_docker_hosts_use_common
# Type: bool (true/false)
postgres_role_docker_hosts_use_common:
# Type: bool (true/false)
postgres2_docker_hosts_use_common:
postgres_role_docker_ipc_modepostgres2_docker_ipc_mode
# Type: string
postgres_role_docker_ipc_mode:
# Type: string
postgres2_docker_ipc_mode:
postgres_role_docker_linkspostgres2_docker_links
# Type: list
postgres_role_docker_links:
# Type: list
postgres2_docker_links:
postgres_role_docker_network_modepostgres2_docker_network_mode
# Type: string
postgres_role_docker_network_mode:
# Type: string
postgres2_docker_network_mode:
postgres_role_docker_pid_modepostgres2_docker_pid_mode
# Type: string
postgres_role_docker_pid_mode:
# Type: string
postgres2_docker_pid_mode:
postgres_role_docker_portspostgres2_docker_ports
# Type: list
postgres_role_docker_ports:
# Type: list
postgres2_docker_ports:
postgres_role_docker_utspostgres2_docker_uts
# Type: string
postgres_role_docker_uts:
# Type: string
postgres2_docker_uts:

Storage

postgres_role_docker_keep_volumespostgres2_docker_keep_volumes
# Type: bool (true/false)
postgres_role_docker_keep_volumes:
# Type: bool (true/false)
postgres2_docker_keep_volumes:
postgres_role_docker_mountspostgres2_docker_mounts
# Type: list
postgres_role_docker_mounts:
# Type: list
postgres2_docker_mounts:
postgres_role_docker_storage_optspostgres2_docker_storage_opts
# Type: dict
postgres_role_docker_storage_opts:
# Type: dict
postgres2_docker_storage_opts:
postgres_role_docker_tmpfspostgres2_docker_tmpfs
# Type: list
postgres_role_docker_tmpfs:
# Type: list
postgres2_docker_tmpfs:
postgres_role_docker_volume_driverpostgres2_docker_volume_driver
# Type: string
postgres_role_docker_volume_driver:
# Type: string
postgres2_docker_volume_driver:
postgres_role_docker_volumes_frompostgres2_docker_volumes_from
# Type: list
postgres_role_docker_volumes_from:
# Type: list
postgres2_docker_volumes_from:
postgres_role_docker_volumes_globalpostgres2_docker_volumes_global
# Type: bool (true/false)
postgres_role_docker_volumes_global:
# Type: bool (true/false)
postgres2_docker_volumes_global:
postgres_role_docker_working_dirpostgres2_docker_working_dir
# Type: string
postgres_role_docker_working_dir:
# Type: string
postgres2_docker_working_dir:

Monitoring & Lifecycle

postgres_role_docker_auto_removepostgres2_docker_auto_remove
# Type: bool (true/false)
postgres_role_docker_auto_remove:
# Type: bool (true/false)
postgres2_docker_auto_remove:
postgres_role_docker_cleanuppostgres2_docker_cleanup
# Type: bool (true/false)
postgres_role_docker_cleanup:
# Type: bool (true/false)
postgres2_docker_cleanup:
postgres_role_docker_force_killpostgres2_docker_force_kill
# Type: string
postgres_role_docker_force_kill:
# Type: string
postgres2_docker_force_kill:
postgres_role_docker_healthcheckpostgres2_docker_healthcheck
# Type: dict
postgres_role_docker_healthcheck:
# Type: dict
postgres2_docker_healthcheck:
postgres_role_docker_healthy_wait_timeoutpostgres2_docker_healthy_wait_timeout
# Type: int
postgres_role_docker_healthy_wait_timeout:
# Type: int
postgres2_docker_healthy_wait_timeout:
postgres_role_docker_initpostgres2_docker_init
# Type: bool (true/false)
postgres_role_docker_init:
# Type: bool (true/false)
postgres2_docker_init:
postgres_role_docker_kill_signalpostgres2_docker_kill_signal
# Type: string
postgres_role_docker_kill_signal:
# Type: string
postgres2_docker_kill_signal:
postgres_role_docker_log_driverpostgres2_docker_log_driver
# Type: string
postgres_role_docker_log_driver:
# Type: string
postgres2_docker_log_driver:
postgres_role_docker_log_optionspostgres2_docker_log_options
# Type: dict
postgres_role_docker_log_options:
# Type: dict
postgres2_docker_log_options:
postgres_role_docker_oom_killerpostgres2_docker_oom_killer
# Type: bool (true/false)
postgres_role_docker_oom_killer:
# Type: bool (true/false)
postgres2_docker_oom_killer:
postgres_role_docker_oom_score_adjpostgres2_docker_oom_score_adj
# Type: int
postgres_role_docker_oom_score_adj:
# Type: int
postgres2_docker_oom_score_adj:
postgres_role_docker_output_logspostgres2_docker_output_logs
# Type: bool (true/false)
postgres_role_docker_output_logs:
# Type: bool (true/false)
postgres2_docker_output_logs:
postgres_role_docker_pausedpostgres2_docker_paused
# Type: bool (true/false)
postgres_role_docker_paused:
# Type: bool (true/false)
postgres2_docker_paused:
postgres_role_docker_recreatepostgres2_docker_recreate
# Type: bool (true/false)
postgres_role_docker_recreate:
# Type: bool (true/false)
postgres2_docker_recreate:
postgres_role_docker_restart_retriespostgres2_docker_restart_retries
# Type: int
postgres_role_docker_restart_retries:
# Type: int
postgres2_docker_restart_retries:
postgres_role_docker_stop_timeoutpostgres2_docker_stop_timeout
# Type: int
postgres_role_docker_stop_timeout:
# Type: int
postgres2_docker_stop_timeout:

Other Options

postgres_role_docker_capabilitiespostgres2_docker_capabilities
# Type: list
postgres_role_docker_capabilities:
# Type: list
postgres2_docker_capabilities:
postgres_role_docker_cgroup_parentpostgres2_docker_cgroup_parent
# Type: string
postgres_role_docker_cgroup_parent:
# Type: string
postgres2_docker_cgroup_parent:
postgres_role_docker_commandspostgres2_docker_commands
# Type: list
postgres_role_docker_commands:
# Type: list
postgres2_docker_commands:
postgres_role_docker_create_timeoutpostgres2_docker_create_timeout
# Type: int
postgres_role_docker_create_timeout:
# Type: int
postgres2_docker_create_timeout:
postgres_role_docker_entrypointpostgres2_docker_entrypoint
# Type: string
postgres_role_docker_entrypoint:
# Type: string
postgres2_docker_entrypoint:
postgres_role_docker_env_filepostgres2_docker_env_file
# Type: string
postgres_role_docker_env_file:
# Type: string
postgres2_docker_env_file:
postgres_role_docker_labelspostgres2_docker_labels
# Type: dict
postgres_role_docker_labels:
# Type: dict
postgres2_docker_labels:
postgres_role_docker_labels_use_commonpostgres2_docker_labels_use_common
# Type: bool (true/false)
postgres_role_docker_labels_use_common:
# Type: bool (true/false)
postgres2_docker_labels_use_common:
postgres_role_docker_read_onlypostgres2_docker_read_only
# Type: bool (true/false)
postgres_role_docker_read_only:
# Type: bool (true/false)
postgres2_docker_read_only:
postgres_role_docker_runtimepostgres2_docker_runtime
# Type: string
postgres_role_docker_runtime:
# Type: string
postgres2_docker_runtime:
postgres_role_docker_sysctlspostgres2_docker_sysctls
# Type: list
postgres_role_docker_sysctls:
# Type: list
postgres2_docker_sysctls:
postgres_role_docker_ulimitspostgres2_docker_ulimits
# Type: list
postgres_role_docker_ulimits:
# Type: list
postgres2_docker_ulimits:
postgres_role_autoheal_enabledpostgres2_autoheal_enabled
# Enable or disable Autoheal monitoring for containers created when deploying
# Type: bool (true/false)
postgres_role_autoheal_enabled: true
# Enable or disable Autoheal monitoring for containers created when deploying
# Type: bool (true/false)
postgres2_autoheal_enabled: true
postgres_role_depends_onpostgres2_depends_on
# List of container dependencies that must be running before containers start
# Type: string
postgres_role_depends_on: ""
# List of container dependencies that must be running before containers start
# Type: string
postgres2_depends_on: ""
postgres_role_depends_on_delaypostgres2_depends_on_delay
# Delay in seconds before starting containers after dependencies are ready
# Type: string (quoted number)
postgres_role_depends_on_delay: "0"
# Delay in seconds before starting containers after dependencies are ready
# Type: string (quoted number)
postgres2_depends_on_delay: "0"
postgres_role_depends_on_healthcheckspostgres2_depends_on_healthchecks
# Enable healthcheck waiting for container dependencies
# Type: string ("true"/"false")
postgres_role_depends_on_healthchecks:
# Enable healthcheck waiting for container dependencies
# Type: string ("true"/"false")
postgres2_depends_on_healthchecks:
postgres_role_diun_enabledpostgres2_diun_enabled
# Enable or disable Diun update notifications for containers created when deploying
# Type: bool (true/false)
postgres_role_diun_enabled: true
# Enable or disable Diun update notifications for containers created when deploying
# Type: bool (true/false)
postgres2_diun_enabled: true
postgres_role_docker_controllerpostgres2_docker_controller
# Enable or disable Saltbox Docker Controller management for containers
# Type: bool (true/false)
postgres_role_docker_controller: true
# Enable or disable Saltbox Docker Controller management for containers
# Type: bool (true/false)
postgres2_docker_controller: true
postgres_role_docker_env_dbpostgres2_docker_env_db
# Type: string
postgres_role_docker_env_db:
# Type: string
postgres2_docker_env_db:
postgres_role_docker_env_passwordpostgres2_docker_env_password
# Type: string
postgres_role_docker_env_password:
# Type: string
postgres2_docker_env_password:
postgres_role_docker_env_userpostgres2_docker_env_user
# Type: string
postgres_role_docker_env_user:
# Type: string
postgres2_docker_env_user:
postgres_role_docker_image_repopostgres2_docker_image_repo
# Type: string
postgres_role_docker_image_repo:
# Type: string
postgres2_docker_image_repo:
postgres_role_docker_image_tagpostgres2_docker_image_tag
# Type: string
postgres_role_docker_image_tag:
# Type: string
postgres2_docker_image_tag:
postgres_role_docker_volumes_downloadpostgres2_docker_volumes_download
# Type: bool (true/false)
postgres_role_docker_volumes_download:
# Type: bool (true/false)
postgres2_docker_volumes_download: