diff --git a/data/hostname/backup01.euwest.azure.internal.softwareheritage.org.yaml b/data/hostname/backup01.euwest.azure.internal.softwareheritage.org.yaml index 0685c0b4..ce421245 100644 --- a/data/hostname/backup01.euwest.azure.internal.softwareheritage.org.yaml +++ b/data/hostname/backup01.euwest.azure.internal.softwareheritage.org.yaml @@ -1,22 +1,36 @@ swh::apt_config::enable_non_free: true packages: - linux-headers-cloud-amd64 - zfs-dkms syncoid::configuration: sources: dali: host: dali.internal.admin.swh.network datasets: postgresql: dataset: data/postgresql frequency: 1h sync_snap: no # snapshots are managed by sanoid postgresql_wal: target: postgresql/wal dataset: data/postgresql/wal frequency: 1h sync_snap: no # snapshots are managed by sanoid target_dataset_base: data/sync ssh_key: backup01-azure + +sanoid::configuration: + local_config: + data/sync/dali/postgresql: + use_template: backup + hourly: 0 + monthly: 2 + daily: 30 + data/sync/dali/postgresql/wal: + use_template: backup + hourly: 0 + monthly: 2 + daily: 30 + \ No newline at end of file diff --git a/data/hostname/dali.internal.admin.swh.network.yaml b/data/hostname/dali.internal.admin.swh.network.yaml index 983f3265..29f764e1 100644 --- a/data/hostname/dali.internal.admin.swh.network.yaml +++ b/data/hostname/dali.internal.admin.swh.network.yaml @@ -1,49 +1,39 @@ swh::postgresql::shared_buffers: 8GB swh::dbs: netbox: name: "%{alias('netbox::db::database')}" user: "%{alias('netbox::db::username')}" password: "%{alias('netbox::db::password')}" hedgedoc: name: "%{alias('hedgedoc::db::database')}" user: "%{alias('hedgedoc::db::username')}" grafana: name: "%{alias('grafana::db::username')}" user: "%{alias('grafana::db::username')}" password: "%{alias('grafana::db::password')}" sentry: name: "%{alias('sentry::postgres::dbname')}" user: "%{alias('sentry::postgres::user')}" password: "%{alias('sentry::postgres::password')}" keycloak: name: "%{alias('keycloak::postgres::dbname')}" user: "%{alias('keycloak::postgres::user')}" password: "%{alias('keycloak::postgres::password')}" prometheus::sql::config_snippets: - activity - queries sanoid::configuration: - - storage_config: - data/postgresql: - use_template: backup - data/postgresql/wal: - use_template: backup - local_config: data/postgresql: use_template: pg_backup hourly: 0 monthly: 1 daily: 7 data/postgresql/wal: use_template: pg_wal_backup hourly: 0 monthly: 1 daily: 7 - - - diff --git a/manifests/site.pp b/manifests/site.pp index 10c5ecd2..6538c05d 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -1,220 +1,224 @@ node /^(pompidou|uffizi)\.(internal\.)?softwareheritage\.org$/ { include role::swh_hypervisor } node /^(beaubourg|hypervisor\d+|branly)\.(internal\.)?softwareheritage\.org$/ { include role::swh_hypervisor_with_ceph } node 'pergamon.softwareheritage.org' { include role::swh_sysadmin } node 'grafana0.internal.admin.swh.network' { include role::swh_grafana } node 'tate.softwareheritage.org' { include role::swh_forge } node 'moma.softwareheritage.org' { include role::swh_rp_webapps } node 'webapp1.internal.softwareheritage.org' { include role::swh_rp_webapp } node /^search-esnode\d\.internal\.softwareheritage\.org$/ { include role::swh_elasticsearch } node /^search\d\.internal\.softwareheritage\.org$/ { include role::swh_search_with_journal_client } node /^counters\d\.internal\.softwareheritage\.org$/ { include role::swh_counters_with_journal_client } node 'saatchi.internal.softwareheritage.org' { include role::swh_scheduler_with_journal_client } node /^(belvedere|somerset).(internal.)?softwareheritage.org$/ { include role::swh_database include profile::pgbouncer } node 'banco.softwareheritage.org' { include role::swh_backup include role::postgresql_backup } node /^esnode\d+.(internal.)?softwareheritage.org$/ { include role::swh_elasticsearch } node /^kafka\d+\./ { include role::swh_kafka_broker } node /^cassandra\d+\./ { include role::swh_cassandra_node } node 'granet.internal.softwareheritage.org' { include role::swh_graph_backend } node 'met.internal.softwareheritage.org' { include role::swh_provenance } node /^(unibo-prod|vangogh).(euwest.azure.)?(internal.)?softwareheritage.org$/ { include role::swh_vault } node /^saam\.(internal\.)?softwareheritage\.org$/ { include role::swh_storage_baremetal } node 'storage01.euwest.azure.internal.softwareheritage.org' { include role::swh_storage_cloud } node /^getty.(internal.)?softwareheritage.org$/ { include role::swh_journal_orchestrator_with_backfill_config } node /^worker\d+\.(internal\.)?softwareheritage\.org$/ { include role::swh_worker_inria } node /^worker\d+\..*\.azure\.internal\.softwareheritage\.org$/ { include role::swh_worker_azure } node /^dbreplica(0|1)\.euwest\.azure\.internal\.softwareheritage\.org$/ { include role::swh_database } node /^ceph-osd\d+\.internal\.softwareheritage\.org$/ { include role::swh_ceph_osd } node /^ceph-mon\d+\.internal\.softwareheritage\.org$/ { include role::swh_ceph_mon } node /^ns\d+\.(.*\.azure\.)?internal\.softwareheritage\.org/ { include role::swh_nameserver_secondary } node 'thyssen.internal.softwareheritage.org' { include role::swh_ci_server } node 'riverside.internal.admin.swh.network' { include role::swh_sentry } node /^jenkins-debian\d+\.internal\.softwareheritage\.org$/ { include role::swh_ci_agent_debian } node 'logstash0.internal.softwareheritage.org' { include role::swh_logstash_instance } node 'kibana0.internal.softwareheritage.org' { include role::swh_kibana_instance } node 'kelvingrove.internal.softwareheritage.org' { include role::swh_idp_primary } node 'giverny.softwareheritage.org' { include role::swh_desktop } node /^db\d\.internal\.staging\.swh\.network$/ { include role::swh_database include profile::postgresql::server include profile::pgbouncer include profile::postgresql::client } node 'dali.internal.admin.swh.network' { include role::swh_admin_database } node "bardo.internal.admin.swh.network" { include role::swh_hedgedoc } node 'scheduler0.internal.staging.swh.network' { include role::swh_scheduler_with_journal_client include profile::postgresql::client } node 'gateway.internal.staging.swh.network' { include role::swh_gateway } node /^storage\d\.internal\.staging\.swh\.network$/ { include role::swh_storage_with_journal } node /^worker\d\.internal\.staging\.swh\.network$/ { include role::swh_worker_inria } node /^search-esnode\d\.internal\.staging\.swh\.network$/ { include role::swh_elasticsearch } node /^search\d\.internal\.staging\.swh\.network$/ { include role::swh_search_with_journal_client } node /^counters\d\.internal\.staging\.swh\.network$/ { include role::swh_counters_with_journal_client } node 'webapp.internal.staging.swh.network' { include role::swh_webapp } node 'deposit.internal.staging.swh.network' { include role::swh_deposit } node 'vault.internal.staging.swh.network' { include role::swh_vault } node /^rp\d\.internal\.(staging|admin)\.swh\.network$/ { include role::swh_reverse_proxy } # Read-only storage for mirrors node 'objstorage0.internal.staging.swh.network' { include role::swh_remote_objstorage } node 'bojimans.internal.admin.swh.network' { include role::swh_netbox } node /^mirror-test\.internal\.staging\.swh\.network$/ { include profile::postgresql::client } +node 'backup01.euwest.azure.internal.softwareheritage.org' { + include role::zfs_snapshots_storage +} + node default { include role::swh_base } diff --git a/site-modules/role/manifests/zfs_snapshots_storage.pp b/site-modules/role/manifests/zfs_snapshots_storage.pp new file mode 100644 index 00000000..01a1c6bd --- /dev/null +++ b/site-modules/role/manifests/zfs_snapshots_storage.pp @@ -0,0 +1,7 @@ +# role of zfs snapshot storage server +# only declare a sanoid class to install +# the configuration to manage the snapshot +# retention policy +class role::zfs_snapshots_storage inherits role::swh_base { + include profile::sanoid::snapshot +}