Version information
This version is compatible with:
- Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
- Puppet >= 7.0.0 < 9.0.0
- , , ,
Start using this module
Add this module to your Puppetfile:
mod 'tailoredautomation-patroni', '2.0.0'
Learn more about managing modules with a PuppetfileDocumentation
patroni
Table of Contents
- Description
- Setup - The basics of getting started with patroni
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
- License
Description
This module sets up a Patroni instance, which provides seemless replication for PostgreSQL, allowing you to run a load balanced and highly available PostgreSQL service. It is one of many options for HA with PostgreSQL, so please take a look at the myriad of other options to make sure you pick the one that is right for your environment.
This module alone is not enough to run a fully HA and replicated service. Please read up on your options at Patroni's GitHub Project. In our case, we use haproxy, using puppetlabs's haproxxy module, and etcd, using Tailored Automation's etcd module.
This module was originally written by Jadestorm. Thank you!!!
Setup
What patroni affects
The patroni module sets up the following:
- Install necessary PostgreSQL packages
- Installs Patroni via Pip or package
- Sets up a systemd based service for Patroni
- Manages Patroni's configuration
Setup Requirements
It is very important that you read up on how Patroni works, as you will also need a variety of other components to accomplish anything useful with Patroni.
If not installing via Pip and setting $install_method => 'package'
,
you also need to make sure the patroni package is available somewhere. For RPM based systems, you can
get the package from here.
Beginning with patroni
A bare minimum configuration might be:
class { 'patroni':
scope => 'mycluster',
}
If you specify patroni::pgsql_parameters
at multiple levels in Hiera
and would like to merge them, add the following to your common.yaml
(or lowest priority Hiera level).
lookup_options:
patroni::pgsql_parameters:
merge: deep
This assumes you have taken care of all of the rest of the components needed for Patroni.
Usage
Below is a full example:
# First PostgreSQL server
node pg1 {
class { 'etcd':
etcd_name => ${::hostname},
listen_client_urls => 'http://0.0.0.0:2379',
advertise_client_urls => "http://${::fqdn}:2379",
listen_peer_urls => 'http://0.0.0.0:2380',
initial_advertise_peer_urls => "http://${::fqdn}:2380",
initial_cluster => [
'pgarb=http://pgarb.example.org:2380',
'pg1=http://pg1.example.org:2380',
'pg2=http://pg2.example.org:2380',
],
initial_cluster_state => 'existing',
}
class { 'patroni':
scope => 'mycluster',
use_etcd => true,
pgsql_connect_address => "${::fqdn}:5432",
restapi_connect_address => "${::fqdn}:8008",
pgsql_bin_dir => '/usr/pgsql-9.6/bin',
pgsql_data_dir => '/var/lib/pgsql/9.6/data',
pgsql_pgpass_path => '/var/lib/pgsql/pgpass',
pgsql_parameters => {
'max_connections' => 5000,
},
pgsql_pg_hba => [
'host all all 0.0.0.0/0 md5',
'host replication rep_user 0.0.0.0/0 md5',
],
superuser_username => 'postgres',
superuser_password => 'somepassword',
replication_username => 'rep_user',
replication_password => 'someotherpassword',
}
}
# Second PostgreSQL server
node pg2 {
class { 'etcd':
etcd_name => ${::hostname},
listen_client_urls => 'http://0.0.0.0:2379',
advertise_client_urls => "http://${::fqdn}:2379",
listen_peer_urls => 'http://0.0.0.0:2380',
initial_advertise_peer_urls => "http://${::fqdn}:2380",
initial_cluster => [
'pgarb=http://pgarb.example.org:2380',
'pg1=http://pg1.example.org:2380',
'pg2=http://pg2.example.org:2380',
],
initial_cluster_state => 'existing',
}
class { 'patroni':
scope => 'mycluster',
use_etcd => true,
pgsql_connect_address => "${::fqdn}:5432",
restapi_connect_address => "${::fqdn}:8008",
pgsql_bin_dir => '/usr/pgsql-9.6/bin',
pgsql_data_dir => '/var/lib/pgsql/9.6/data',
pgsql_pgpass_path => '/var/lib/pgsql/pgpass',
pgsql_parameters => {
'max_connections' => 5000,
},
pgsql_pg_hba => [
'host all all 0.0.0.0/0 md5',
'host replication rep_user 0.0.0.0/0 md5',
],
superuser_username => 'postgres',
superuser_password => 'somepassword',
replication_username => 'rep_user',
replication_password => 'someotherpassword',
}
}
# Simple etcd arbitrator node, meaning it serves no content of it's own, just helps keep quorum
node pgarb {
class { 'etcd':
etcd_name => ${::hostname},
listen_client_urls => 'http://0.0.0.0:2379',
advertise_client_urls => "http://${::fqdn}:2379",
listen_peer_urls => 'http://0.0.0.0:2380',
initial_advertise_peer_urls => "http://${::fqdn}:2380",
initial_cluster => [
'pgarb=http://pgarb.example.org:2380',
'pg1=http://pg1.example.org:2380',
'pg2=http://pg2.example.org:2380',
],
initial_cluster_state => 'existing',
}
}
Some values such as the PostgreSQL max_connections
require changes to the DCS configuration.
This example shows using the patroni_dcs_config
type with an Exec
that will restart the Patroni cluster.
include patroni
patroni_dcs_config { 'postgresql.parameters.max_connections':
value => 200,
notify => Exec['patroni-restart-pending'],
}
exec { 'patroni-restart-pending':
path => '/usr/bin:/bin:/usr/sbin:/sbin',
command => "sleep 60 ; ${patroni::patronictl} -c ${patroni::config_path} restart ${patroni::scope} --pending --force",
refreshonly => true,
require => Service['patroni'],
}
Reference
All of the Patroni settings I could find in the Patroni Settings Documentation are mapped to this module. However, I do not have experience with the bulk of those settings, so implementing them here was done as a best guess.
I also highly recommend checking out PostgreSQL High Availability Cookbook as it is a fantastic resource for wrapping your head around all of the options and has a great walkthrough for setting up Patroni.
Limitations
This module is currently only supported on RHEL and Debian based operating systems that support Systemd.
Development
See CONTRIBUTING.md
License
See LICENSE file.
Reference
Table of Contents
Classes
patroni
: Manages a Patroni instance
Resource types
patroni_dcs_config
: Manages Patroni DCS configuration optionspatronictl_config
: Abstract type to configure other types
Classes
patroni
Manages a Patroni instance
Parameters
The following parameters are available in the patroni
class:
scope
namespace
hostname
dcs_loop_wait
dcs_ttl
dcs_retry_timeout
dcs_maximum_lag_on_failover
dcs_master_start_timeout
dcs_synchronous_mode
dcs_synchronous_mode_strict
dcs_postgresql_use_pg_rewind
dcs_postgresql_use_slots
dcs_postgresql_recovery_conf
dcs_postgresql_parameters
bootstrap_method
initdb_data_checksums
initdb_encoding
initdb_locale
bootstrap_pg_hba
bootstrap_users
bootstrap_post_bootstrap
bootstrap_post_init
superuser_username
superuser_password
replication_username
replication_password
callback_on_reload
callback_on_restart
callback_on_role_change
callback_on_start
callback_on_stop
pgsql_connect_address
pgsql_create_replica_methods
pgsql_data_dir
pgsql_config_dir
pgsql_bin_dir
pgsql_listen
pgsql_use_unix_socket
pgsql_pgpass_path
pgsql_recovery_conf
pgsql_custom_conf
pgsql_parameters
pgsql_pg_hba
pgsql_pg_ctl_timeout
pgsql_use_pg_rewind
pgsql_remove_data_directory_on_rewind_failure
pgsql_replica_method
manage_postgresql_repo
use_consul
consul_host
consul_url
consul_port
consul_scheme
consul_token
consul_verify
consul_register_service
consul_service_check_interval
consul_consistency
consul_cacert
consul_cert
consul_key
consul_dc
consul_checks
use_etcd
etcd_host
etcd_hosts
etcd_url
etcd_proxyurl
etcd_srv
etcd_protocol
etcd_username
etcd_password
etcd_cacert
etcd_cert
etcd_key
use_exhibitor
exhibitor_hosts
exhibitor_poll_interval
exhibitor_port
use_kubernetes
kubernetes_namespace
kubernetes_labels
kubernetes_scope_label
kubernetes_role_label
kubernetes_use_endpoints
kubernetes_pod_ip
kubernetes_ports
restapi_ciphers
restapi_connect_address
restapi_listen
restapi_username
restapi_password
restapi_certfile
restapi_keyfile
restapi_cafile
restapi_verify_client
use_zookeeper
zookeeper_hosts
watchdog_mode
watchdog_device
watchdog_safety_margin
manage_postgresql
postgresql_version
package_name
version
install_dependencies
manage_python
install_method
install_dir
python_class_version
python_venv_version
manage_venv_package
config_path
config_owner
config_group
config_mode
service_name
service_ensure
service_enable
custom_pip_provider
scope
Data type: String
Refer to Patroni Global scope
setting
namespace
Data type: String
Refer to Patroni Global namespace
setting
Default value: '/service/'
hostname
Data type: String
Refer to Patroni Global name
setting
Default value: $facts['networking']['hostname']
dcs_loop_wait
Data type: Integer
Refer to Patroni Dynamic Configuration Settings loop_wait
setting
Default value: 10
dcs_ttl
Data type: Integer
Refer to Patroni Dynamic Configuration Settings ttl
setting
Default value: 30
dcs_retry_timeout
Data type: Integer
Refer to Patroni Dynamic Configuration Settings retry_timeout
setting
Default value: 10
dcs_maximum_lag_on_failover
Data type: Integer
Refer to Patroni Dynamic Configuration Settings maximum_lag_on_failover
setting
Default value: 1048576
dcs_master_start_timeout
Data type: Integer
Refer to Patroni Dynamic Configuration Settings master_start_timeout
setting
Default value: 300
dcs_synchronous_mode
Data type: Boolean
Refer to Patroni Dynamic Configuration Settings synchronous_mode
setting
Default value: false
dcs_synchronous_mode_strict
Data type: Boolean
Refer to Patroni Dynamic Configuration Settings synchronous_mode_strict
setting
Default value: false
dcs_postgresql_use_pg_rewind
Data type: Boolean
Refer to Patroni Dynamic Configuration Settings postgresql_use_pg_rewind
setting
Default value: true
dcs_postgresql_use_slots
Data type: Boolean
Refer to Patroni Dynamic Configuration Settings postgresql_use_slots
setting
Default value: true
dcs_postgresql_recovery_conf
Data type: Hash
Refer to Patroni Dynamic Configuration Settings postgresql_recovery_conf
setting
Default value: {}
dcs_postgresql_parameters
Data type: Hash
Refer to Patroni Dynamic Configuration Settings postgresql_parameters
setting
Default value: {}
bootstrap_method
Data type: String[1]
Refer to Bootstrap configuration settings method
setting
Default value: 'initdb'
initdb_data_checksums
Data type: Boolean
Refer to Bootstrap configuration settings data-checksums
setting
Default value: true
initdb_encoding
Data type: String
Refer to Bootstrap configuration settings encoding
setting
Default value: 'UTF8'
initdb_locale
Data type: String
Refer to Bootstrap configuration settings locale
setting
Default value: 'en_US.utf8'
bootstrap_pg_hba
Data type: Array[String]
Refer to Bootstrap configuration settings pg_hba
setting
Default value:
[
'host all all 0.0.0.0/0 md5',
'host replication rep_user 0.0.0.0/0 md5',
]
bootstrap_users
Data type: Hash
Refer to Bootstrap configuration settings users
setting
Default value: {}
bootstrap_post_bootstrap
Data type: Variant[Undef,String]
Refer to Bootstrap configuration settings post_bootstrap
setting
Default value: undef
bootstrap_post_init
Data type: Variant[Undef,String]
Refer to Bootstrap configuration settings post_init
setting
Default value: undef
superuser_username
Data type: String
Refer to PostgreSQL configuration settings superuser username
Default value: 'postgres'
superuser_password
Data type: String
Refer to PostgreSQL configuration settings superuser password
Default value: 'changeme'
replication_username
Data type: String
Refer to PostgreSQL configuration settings replication username
Default value: 'rep_user'
replication_password
Data type: String
Refer to PostgreSQL configuration settings replication password
Default value: 'changeme'
callback_on_reload
Data type: Variant[Undef,String]
Refer to PostgreSQL configuration settings callbacks on_reload
Default value: undef
callback_on_restart
Data type: Variant[Undef,String]
Refer to PostgreSQL configuration settings callbacks on_restart
Default value: undef
callback_on_role_change
Data type: Variant[Undef,String]
Refer to PostgreSQL configuration settings callbacks on_role_change
Default value: undef
callback_on_start
Data type: Variant[Undef,String]
Refer to PostgreSQL configuration settings callbacks on_start
Default value: undef
callback_on_stop
Data type: Variant[Undef,String]
Refer to PostgreSQL configuration settings callbacks on_stop
Default value: undef
pgsql_connect_address
Data type: String
Refer to PostgreSQL configuration settings connect_address
setting
Default value: "${facts['networking']['fqdn']}:5432"
pgsql_create_replica_methods
Data type: Array[String]
Refer to PostgreSQL configuration settings create_replica_methods
setting
Default value: ['basebackup']
pgsql_data_dir
Data type: Optional[Stdlib::Unixpath]
Refer to PostgreSQL configuration settings data_dir
setting
Default value: undef
pgsql_config_dir
Data type: Variant[Undef,String]
Refer to PostgreSQL configuration settings config_dir
setting
Default value: undef
pgsql_bin_dir
Data type: Variant[Undef,String]
Refer to PostgreSQL configuration settings bin_dir
setting
Default value: undef
pgsql_listen
Data type: String
Refer to PostgreSQL configuration settings listen
setting
Default value: '0.0.0.0:5432'
pgsql_use_unix_socket
Data type: Boolean
Refer to PostgreSQL configuration settings use_unix_socket
setting
Default value: false
pgsql_pgpass_path
Data type: String
Refer to PostgreSQL configuration settings pgpass_path
setting
Default value: '/tmp/pgpass0'
pgsql_recovery_conf
Data type: Hash
Refer to PostgreSQL configuration settings recovery_conf
setting
Default value: {}
pgsql_custom_conf
Data type: Variant[Undef,String]
Refer to PostgreSQL configuration settings custom_conf
setting
Default value: undef
pgsql_parameters
Data type: Hash
Refer to PostgreSQL configuration settings parameters
setting
Default value: {}
pgsql_pg_hba
Data type: Array[String]
Refer to PostgreSQL configuration settings pg_hba
setting
Default value: []
pgsql_pg_ctl_timeout
Data type: Integer
Refer to PostgreSQL configuration settings pg_ctl_timeout
setting
Default value: 60
pgsql_use_pg_rewind
Data type: Boolean
Refer to PostgreSQL configuration settings use_pg_rewind
setting
Default value: true
pgsql_remove_data_directory_on_rewind_failure
Data type: Boolean
Refer to PostgreSQL configuration settings remove_data_directory_on_rewind_failure
setting
Default value: false
pgsql_replica_method
Data type: Array[Hash]
Refer to PostgreSQL configuration settings replica_method
setting
Default value: []
manage_postgresql_repo
Data type: Boolean
Should the postgresql module manage the package repo
Default value: true
use_consul
Data type: Boolean
Boolean to use Consul for configuration storage
Default value: false
consul_host
Data type: String
Refer to Consul configuration host
setting
Default value: 'localhost'
consul_url
Data type: Variant[Undef,String]
Refer to Consul configuration url
setting
Default value: undef
consul_port
Data type: Stdlib::Port
Refer to Consul configuration port
setting
Default value: 8500
consul_scheme
Data type: Enum['http','https']
Refer to Consul configuration scheme
setting
Default value: 'http'
consul_token
Data type: Variant[Undef,String]
Refer to Consul configuration token
setting
Default value: undef
consul_verify
Data type: Boolean
Refer to Consul configuration verify
setting
Default value: false
consul_register_service
Data type: Optional[Boolean]
Refer to Consul configuration register_service
setting
Default value: undef
consul_service_check_interval
Data type: Optional[String]
Refer to Consul configuration service_check_interval
setting
Default value: undef
consul_consistency
Data type: Optional[Enum['default', 'consistent', 'stale']]
Refer to Consul configuration consistency
setting
Default value: undef
consul_cacert
Data type: Variant[Undef,String]
Refer to Consul configuration cacert
setting
Default value: undef
consul_cert
Data type: Variant[Undef,String]
Refer to Consul configuration cert
setting
Default value: undef
consul_key
Data type: Variant[Undef,String]
Refer to Consul configuration key
setting
Default value: undef
consul_dc
Data type: Variant[Undef,String]
Refer to Consul configuration dc
setting
Default value: undef
consul_checks
Data type: Variant[Undef,String]
Refer to Consul configuration checks
setting
Default value: undef
use_etcd
Data type: Boolean
Boolean to use Etcd for configuration storage
Default value: false
etcd_host
Data type: String
Refer to Etcd configuration host
setting
Default value: '127.0.0.1:2379'
etcd_hosts
Data type: Array[String]
Refer to Etcd configuration hosts
setting
Default value: []
etcd_url
Data type: Variant[Undef,String]
Refer to Etcd configuration url
setting
Default value: undef
etcd_proxyurl
Data type: Variant[Undef,String]
Refer to Etcd configuration proxy
setting
Default value: undef
etcd_srv
Data type: Variant[Undef,String]
Refer to Etcd configuration srv
setting
Default value: undef
etcd_protocol
Data type: Enum['http','https']
Refer to Etcd configuration protocol
setting
Default value: 'http'
etcd_username
Data type: Variant[Undef,String]
Refer to Etcd configuration username
setting
Default value: undef
etcd_password
Data type: Variant[Undef,String]
Refer to Etcd configuration password
setting
Default value: undef
etcd_cacert
Data type: Variant[Undef,String]
Refer to Etcd configuration cacert
setting
Default value: undef
etcd_cert
Data type: Variant[Undef,String]
Refer to Etcd configuration cert
setting
Default value: undef
etcd_key
Data type: Variant[Undef,String]
Refer to Etcd configuration key
setting
Default value: undef
use_exhibitor
Data type: Boolean
Boolean to use Exhibitor configuration storage
Default value: false
exhibitor_hosts
Data type: Array[String]
Refer to Exhibitor configuration hosts
setting
Default value: []
exhibitor_poll_interval
Data type: Integer
Refer to Exhibitor configuration poll_interval
setting
Default value: 10
exhibitor_port
Data type: Integer
Refer to Exhibitor configuration port
setting
Default value: 8080
use_kubernetes
Data type: Boolean
Boolean to use Kubernetes configuration storage
Default value: false
kubernetes_namespace
Data type: String
Refer to Kubernetes configuration namespace
setting
Default value: 'default'
kubernetes_labels
Data type: Hash
Refer to Kubernetes configuration labels
setting
Default value: {}
kubernetes_scope_label
Data type: Variant[Undef,String]
Refer to Kubernetes configuration scope_label
setting
Default value: undef
kubernetes_role_label
Data type: Variant[Undef,String]
Refer to Kubernetes configuration role_label
setting
Default value: undef
kubernetes_use_endpoints
Data type: Boolean
Refer to Kubernetes configuration use_endpoints
setting
Default value: false
kubernetes_pod_ip
Data type: Variant[Undef,String]
Refer to Kubernetes configuration pod_ip
setting
Default value: undef
kubernetes_ports
Data type: Variant[Undef,String]
Refer to Kubernetes configuration ports
setting
Default value: undef
restapi_ciphers
Data type: Optional[String]
Refer to REST API configuration ciphers
setting
Default value: undef
restapi_connect_address
Data type: String
Refer to REST API configuration connect_address
setting
Default value: "${facts['networking']['fqdn']}:8008"
restapi_listen
Data type: String
Refer to REST API configuration listen
setting
Default value: '0.0.0.0:8008'
restapi_username
Data type: Variant[Undef,String]
Refer to REST API configuration username
setting
Default value: undef
restapi_password
Data type: Variant[Undef,String]
Refer to REST API configuration password
setting
Default value: undef
restapi_certfile
Data type: Variant[Undef,String]
Refer to REST API configuration certfile
setting
Default value: undef
restapi_keyfile
Data type: Variant[Undef,String]
Refer to REST API configuration keyfile
setting
Default value: undef
restapi_cafile
Data type: Optional[String]
Refer to REST API configuration cafile
setting
Default value: undef
restapi_verify_client
Data type: Optional[Enum['none','optional','required']]
Refer to REST API configuration verify_client
setting
Default value: undef
use_zookeeper
Data type: Boolean
Boolean to enable Zookeeper configuration storage
Default value: false
zookeeper_hosts
Data type: Array[String]
Refer to Zookeeper configuration hosts
setting
Default value: []
watchdog_mode
Data type: Enum['off','automatic','required']
Refer to Watchdog configuration mode
setting
Default value: 'automatic'
watchdog_device
Data type: String
Refer to Watchdog configuration device
setting
Default value: '/dev/watchdog'
watchdog_safety_margin
Data type: Integer
Refer to Watchdog configuration safety_margin
setting
Default value: 5
manage_postgresql
Data type: Boolean
Boolean to determine if postgresql is managed
Default value: true
postgresql_version
Data type: Optional[String]
Version of postgresql passed to postgresql::globals class
Default value: undef
package_name
Data type: String
Patroni package name, only used when install_method
is package
Default value: 'patroni'
version
Data type: String
Version of Patroni to install
Default value: 'present'
install_dependencies
Data type: Array
Install dependencies, only used when install_method
is pip
Default value: []
manage_python
Data type: Boolean
Manage Python class, only used when install_method
is pip
Default value: true
install_method
Data type: Enum['package','pip']
Install method
Default value: 'pip'
install_dir
Data type: Stdlib::Absolutepath
Install directory, only used when install_method
is pip
Default value: '/opt/app/patroni'
python_class_version
Data type: String
The version of Python to pass to Python class
Only used when install_method
is pip
Default value: '36'
python_venv_version
Data type: String
The version of Python to pass to Python virtualenv defined type
Only used when install_method
is pip
Default value: '3.6'
manage_venv_package
Data type: Boolean
Whether to manage the Python venv package
Default value: true
config_path
Data type: String
Path to Patroni configuration file
Default value: '/opt/app/patroni/etc/postgresql.yml'
config_owner
Data type: String
Patroni configuration file owner
Default value: 'postgres'
config_group
Data type: String
Patroni configuration file group
Default value: 'postgres'
config_mode
Data type: String
Patroni configuration file mode
Default value: '0600'
service_name
Data type: String
Name of Patroni service
Default value: 'patroni'
service_ensure
Data type: String
Patroni service ensure property
Default value: 'running'
service_enable
Data type: Boolean
Patroni service enable property
Default value: true
custom_pip_provider
Data type: Optional[String[1]]
Use custom pip path when installing pip packages
Default value: undef
Resource types
patroni_dcs_config
Manages Patroni DCS configuration options
Examples
Set PostgreSQL max connections
patroni_dcs_config { 'postgresql.params.max_connections':
value => '200',
}
Properties
The following properties are available in the patroni_dcs_config
type.
value
The value to assign the DCS configuration
Parameters
The following parameters are available in the patroni_dcs_config
type.
name
namevar
The DCS configuration option name
provider
The specific backend to use for this patroni_dcs_config
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
patronictl_config
NOTE This is a private type not intended to be used directly.
Parameters
The following parameters are available in the patronictl_config
type.
config
patronictl config
Default value: /opt/app/patroni/etc/postgresql.yml
name
namevar
The name of the resource.
path
patronictl path
Default value: /opt/app/patroni/bin/patronictl
Change log
All notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v2.0.0 (2023-11-27)
Changed
Merged pull requests:
- PDK update #34 (ghoneycutt)
- Fix CI #32 (ghoneycutt)
- PDK Update #25 (treydock)
v1.6.0 (2021-11-02)
Added
v1.5.0 (2021-06-19)
Added
v1.4.0 (2021-04-28)
Added
- Add support for specifying a custom pip provider #19 (ghoneycutt)
v1.3.0 (2021-04-07)
Merged pull requests:
- Fix acceptance tests #14 (treydock)
- Make managing the postgresql package repo optional #12 (ghoneycutt)
v1.2.0 (2020-10-17)
Added
- Add better unit tests and support getting coverage #10 (treydock)
- Support puppet/python v5.x #8 (treydock)
Fixed
v1.1.0 (2020-10-12)
Fixed
v1.0.1 (2020-09-28)
Merged pull requests:
- Fix release process #4 (treydock)
- Fix links in metadata and documentation #3 (ghoneycutt)
v1.0.0 (2020-09-25)
Merged pull requests:
- V1 #1 (ghoneycutt)
0.1.6 (2020-08-13)
0.1.5 (2020-04-06)
0.1.4 (2020-01-17)
0.1.3 (2019-12-11)
0.1.2 (2019-11-13)
0.1.1 (2018-07-18)
0.1.0 (2018-07-11)
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/stdlib (>= 6.4.0 < 10.0.0)
- puppetlabs/postgresql (>= 6.4.0 < 11.0.0)
- puppet/python (>= 6.0.0 <8.0.0)
- puppet/systemd (>= 5.0.0 <7.0.0)
Copyright (c) 2018-2020 Daniel Henninger <daniel@ncsu.edu> Copyright (C) 2020 Garrett Honeycutt <code@garretthoneycutt.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.