Merge pull request 'Rename postgres cookbook, deploy new replica' (#363) from chore/update_postgres_cookbook into master

Reviewed-on: #363
This commit is contained in:
Greg 2021-11-29 19:15:52 +00:00
commit 70fe5f81a5
23 changed files with 96 additions and 55 deletions

4
clients/postgres-4.json Normal file
View File

@ -0,0 +1,4 @@
{
"name": "postgres-4",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu6fPxOZeKloF/EgYvU0k\nOwv8bJjsCQcWaMTPle5//mRTszA6PM2z9RI+Mfr45qxTlsL9pQY8WJOWF6QOK31x\nszuqcr7oOjtAhrLI8f/oNDEDjcx325FqG9gNKQEAD7d4zodh+PhDe6x7GIyIS7lG\nIcD5Zre9iDwv8FGLR+5GLqS8SJOPL/wJkQ8w+N0f8YDFw81kiTta5NLhAx3fMDs0\n2kmoNlbmKlNZTtLjCfCV+/pa9oY6wycjck3GvobiFE/4cWaNkeGlPc+uAwlfmrOv\nHy0tq1XBX/BCvE5kMXmhnMT23JXjm2s2PgCLgEVGAXilXk/T597KDm+z4oBpAQma\nnQIDAQAB\n-----END PUBLIC KEY-----\n"
}

View File

@ -18,7 +18,7 @@
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos-postgresql::hostsfile",
"kosmos_postgresql::hostsfile",
"kosmos-akkounts",
"kosmos-akkounts::default",
"kosmos-akkounts::nginx",

View File

@ -8,17 +8,17 @@
"automatic": {
"fqdn": "postgres-2",
"os": "linux",
"os_version": "5.4.0-64-generic",
"os_version": "5.4.0-77-generic",
"hostname": "postgres-2",
"ipaddress": "192.168.122.244",
"roles": [
"postgresql_replica"
"postgresql_primary"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos-postgresql::replica",
"kosmos-postgresql::firewall",
"kosmos_postgresql::primary",
"kosmos_postgresql::firewall",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
@ -52,4 +52,4 @@
"recipe[kosmos-base]",
"role[postgresql_primary]"
]
}
}

57
nodes/postgres-4.json Normal file
View File

@ -0,0 +1,57 @@
{
"name": "postgres-4",
"normal": {
"knife_zero": {
"host": "10.1.1.107"
}
},
"automatic": {
"fqdn": "postgres-4",
"os": "linux",
"os_version": "5.4.0-91-generic",
"hostname": "postgres-4",
"ipaddress": "192.168.122.3",
"roles": [
"postgresql_replica"
],
"recipes": [
"kosmos-base",
"kosmos-base::default",
"kosmos_postgresql::hostsfile",
"kosmos_postgresql::replica",
"kosmos_postgresql::firewall",
"apt::default",
"timezone_iii::default",
"timezone_iii::debian",
"ntp::default",
"ntp::apparmor",
"kosmos-base::systemd_emails",
"apt::unattended-upgrades",
"kosmos-base::firewall",
"kosmos-postfix::default",
"postfix::default",
"postfix::_common",
"postfix::_attributes",
"postfix::sasl_auth",
"hostname::default"
],
"platform": "ubuntu",
"platform_version": "20.04",
"cloud": null,
"chef_packages": {
"chef": {
"version": "17.7.29",
"chef_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/chef-17.7.29/lib",
"chef_effortless": null
},
"ohai": {
"version": "17.7.8",
"ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/ohai-17.7.8/lib/ohai"
}
}
},
"run_list": [
"recipe[kosmos-base]",
"role[postgresql_replica]"
]
}

View File

@ -3,5 +3,5 @@
name "postgresql_client"
run_list %w(
kosmos-postgresql::hostsfile
kosmos_postgresql::hostsfile
)

View File

@ -1,6 +1,6 @@
name "postgresql_primary"
run_list %w(
kosmos-postgresql::primary
kosmos-postgresql::firewall
kosmos_postgresql::primary
kosmos_postgresql::firewall
)

View File

@ -1,7 +1,7 @@
name "postgresql_replica"
run_list %w(
kosmos-postgresql::hostsfile
kosmos-postgresql::replica
kosmos-postgresql::firewall
kosmos_postgresql::hostsfile
kosmos_postgresql::replica
kosmos_postgresql::firewall
)

View File

@ -1,5 +0,0 @@
# kosmos-postgresql CHANGELOG
# 0.1.0
Initial release.

View File

@ -2,34 +2,13 @@
# Cookbook:: kosmos_kvm
# Recipe:: host
#
# The MIT License (MIT)
#
# Copyright:: 2020, Kosmos Developers
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
package %w(virtinst libvirt-daemon-system)
directory "/var/lib/libvirt/images/base" do
recursive true
owner "libvirt-qemu"
group "root"
group "kvm"
mode "0750"
end
@ -37,7 +16,7 @@ end
remote_file "/var/lib/libvirt/images/base/ubuntu-20.04-server-cloudimg-amd64-disk-kvm.qcow2" do
source "http://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64-disk-kvm.img"
owner "libvirt-qemu"
group "root"
group "kvm"
mode "0640"
end

View File

@ -0,0 +1,5 @@
# kosmos_postgresql CHANGELOG
# 0.1.0
Initial release.

View File

@ -1,4 +1,4 @@
# kosmos-postgresql
# kosmos_postgresql
## Usage

View File

@ -1,3 +1,3 @@
# This is set to false by default, and set to true in the server resource
# for replicas.
node.default['kosmos-postgresql']['ready_to_set_up_replica'] = false
node.default['kosmos_postgresql']['ready_to_set_up_replica'] = false

View File

@ -1,9 +1,9 @@
name 'kosmos-postgresql'
name 'kosmos_postgresql'
maintainer 'Kosmos'
maintainer_email 'ops@5apps.com'
license 'MIT'
description 'Installs/Configures kosmos-postgresql'
long_description 'Installs/Configures kosmos-postgresql'
description 'Installs/Configures kosmos_postgresql'
long_description 'Installs/Configures kosmos_postgresql'
version '0.1.0'
chef_version '>= 12.14' if respond_to?(:chef_version)
@ -11,13 +11,13 @@ chef_version '>= 12.14' if respond_to?(:chef_version)
# tracked. A `View Issues` link will be displayed on this cookbook's page when
# uploaded to a Supermarket.
#
# issues_url 'https://github.com/<insert_org_here>/kosmos-postgresql/issues'
# issues_url 'https://github.com/<insert_org_here>/kosmos_postgresql/issues'
# The `source_url` points to the development repository for this cookbook. A
# `View Source` link will be displayed on this cookbook's page when uploaded to
# a Supermarket.
#
# source_url 'https://github.com/<insert_org_here>/kosmos-postgresql'
# source_url 'https://github.com/<insert_org_here>/kosmos_postgresql'
depends "postgresql", ">= 7.0.0"
depends "build-essential"

View File

@ -1,5 +1,5 @@
#
# Cookbook:: kosmos-postgresql
# Cookbook:: kosmos_postgresql
# Recipe:: firewall
#

View File

@ -1,5 +1,5 @@
#
# Cookbook:: kosmos-postgresql
# Cookbook:: kosmos_postgresql
# Recipe:: hostsfile
#

View File

@ -1,5 +1,5 @@
#
# Cookbook:: kosmos-postgresql
# Cookbook:: kosmos_postgresql
# Recipe:: primary
#

View File

@ -1,5 +1,5 @@
#
# Cookbook:: kosmos-postgresql
# Cookbook:: kosmos_postgresql
# Recipe:: replica
#

View File

@ -1,4 +1,5 @@
resource_name :postgresql_custom_server
provides :postgresql_custom_server
property :postgresql_version, String, required: true, name_property: true
property :role, String, required: true # Can be primary or replica
@ -41,14 +42,14 @@ action :create do
action :disable
end
shared_buffers = if node['memory']['total'].to_i / 1024 < 1024 # > 1GB RAM
shared_buffers = if node['memory']['total'].to_i / 1024 < 1024 # < 1GB RAM
"128MB"
else # >= 1GB RAM, use 25% of total RAM
"#{node['memory']['total'].to_i / 1024 / 4}MB"
else # >= 1GB RAM, use 50% of total RAM
"#{node['memory']['total'].to_i / 1024 / 2}MB"
end
additional_config = {
max_connections: 100, # default
max_connections: 200, # default
shared_buffers: shared_buffers,
unix_socket_directories: "/var/run/postgresql",
dynamic_shared_memory_type: "posix",