Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.

Commit

Permalink
Configure contacts_admin_db_admin machine class
Browse files Browse the repository at this point in the history
This creates a dedicated database admin machine for Contacts Admin, following the Account API convention devised in #11342.

This is in order to facilitate the implementation of [RFC-143][], which concludes that every GOV.UK relational database should have its own RDS instance.

Trello: https://trello.com/c/HjK4AbUS/49-configure-puppet-for-new-db-admin-mysql-instances

[RFC-143]: https://github.com/alphagov/govuk-rfcs/blob/main/rfc-143-split-database-instances.md
  • Loading branch information
ollietreend committed Dec 15, 2021
1 parent e2cb929 commit 44b0b4e
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 1 deletion.
25 changes: 25 additions & 0 deletions hieradata_aws/class/integration/contacts_admin_db_admin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
govuk_env_sync::tasks:
"pull_contacts_admin_production_daily":
ensure: "present"
hour: "0"
minute: "0"
action: "pull"
dbms: "mysql"
storagebackend: "s3"
database: ""
database_hostname: "contacts-admin-mysql"
temppath: "/tmp/contacts_admin_production"
url: "govuk-production-database-backups"
path: "contacts-admin-mysql"
# "push_contacts_admin_production_daily":
# ensure: "present"
# hour: "5"
# minute: "0"
# action: "push"
# dbms: "mysql"
# storagebackend: "s3"
# database: "contacts_admin_production"
# database_hostname: "contacts-admin-mysql"
# temppath: "/tmp/contacts_admin_production"
# url: "govuk-integration-database-backups"
# path: "contacts-admin-mysql"
13 changes: 13 additions & 0 deletions hieradata_aws/class/production/contacts_admin_db_admin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# govuk_env_sync::tasks:
# "push_contacts_admin_production_daily":
# ensure: "present"
# hour: "23"
# minute: "0"
# action: "push"
# dbms: "mysql"
# storagebackend: "s3"
# database: ""
# database_hostname: "contacts-admin-mysql"
# temppath: "/tmp/contacts_admin_production"
# url: "govuk-production-database-backups"
# path: "contacts-admin-mysql"
25 changes: 25 additions & 0 deletions hieradata_aws/class/staging/contacts_admin_db_admin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
govuk_env_sync::tasks:
"pull_contacts_admin_production_daily":
ensure: "present"
hour: "0"
minute: "0"
action: "pull"
dbms: "mysql"
storagebackend: "s3"
database: ""
database_hostname: "contacts-admin-mysql"
temppath: "/tmp/contacts_admin_production"
url: "govuk-production-database-backups"
path: "contacts-admin-mysql"
# "push_contacts_admin_production_daily":
# ensure: "present"
# hour: "5"
# minute: "0"
# action: "push"
# dbms: "mysql"
# storagebackend: "s3"
# database: "contacts_admin_production"
# database_hostname: "contacts-admin-mysql"
# temppath: "/tmp/contacts_admin_production"
# url: "govuk-staging-database-backups"
# path: "contacts-admin-mysql"
2 changes: 1 addition & 1 deletion modules/govuk/manifests/apps/contacts/db.pp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# == Class: govuk::apps:contacts:db
#
# MySQL to store content for the Contacts app
# MySQL to store content for the Contacts Admin app
# https://github.com/alphagov/contacts-admin
#
# === Parameters
Expand Down
34 changes: 34 additions & 0 deletions modules/govuk/manifests/node/s_contacts_admin_db_admin.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# == Class: govuk_node::s_contacts_admin_db_admin
#
# This machine class is used to administer the Contacts Admin
# MySQL RDS instances.
#
# === Parameters
#
# [*mysql_db_host*]
# The database hostname
#
# [*mysql_db_password*]
# The database password
#
# [*mysql_db_user*]
# The database user to connect to the remote database as
#
class govuk::node::s_contacts_admin_db_admin(
$mysql_db_host = undef,
$mysql_db_password = undef,
$mysql_db_user = undef,
) {
include ::govuk::node::s_base
include govuk_env_sync

file { '/root/.my.cnf':
ensure => 'present',
owner => 'root',
group => 'root',
content => template('govuk/mysql_my.cnf.erb'),
}

# include all MySQL classes that create databases and users
-> class { '::govuk::apps::contacts::db': }
}

0 comments on commit 44b0b4e

Please sign in to comment.