Madhuvishy has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/334692 )
Change subject: nfs: Snapshot backup device on secondary DC before replicating latest from remote ...................................................................... nfs: Snapshot backup device on secondary DC before replicating latest from remote Change-Id: Ic485bf5bce49581a71457f9dcf9802367e3c1c6e --- M modules/labstore/files/block_sync.sh M modules/labstore/manifests/device_backup.pp M modules/role/manifests/labs/nfs/secondary_backup/base.pp M modules/role/manifests/labs/nfs/secondary_backup/misc.pp M modules/role/manifests/labs/nfs/secondary_backup/tools.pp 5 files changed, 50 insertions(+), 20 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/92/334692/1 diff --git a/modules/labstore/files/block_sync.sh b/modules/labstore/files/block_sync.sh index 17fb234..9c556bc 100644 --- a/modules/labstore/files/block_sync.sh +++ b/modules/labstore/files/block_sync.sh @@ -3,8 +3,9 @@ function usage { echo -e "Usage:\n" echo -e "This script replicates an LVM2 block device across the network by taking a remote snapshot\n" - echo -e "block_sync.sh remote_host remote_volume_group remote_logical_volume snapshot_name local_device\n" - echo -e "Example: block_sync.sh 10.64.37.20 misc test snaptest /dev/backup/test\n" + echo -e "It also saves a snapshot of the local device before replicating from the remote snapshot\n" + echo -e "block_sync.sh remote_host remote_volume_group remote_logical_volume snapshot_name local_volume_group local_logical_volume local_snapshot_name local_snapshot_size\n" + echo -e "Example: block_sync.sh 10.64.37.20 misc test snaptest backup test misc-backup 1T\n" } if [[ "$#" -ne 5 || "$1" == '-h' ]]; then @@ -22,7 +23,12 @@ r_snapshot_name=$4 remotenice=10 -localdev=$5 +l_vg=$5 +l_lv=$6 +l_snapshot_name=$7 +l_snapshot_size=$8 +localdev="/dev/${l_vg}/${l_lv}" + blocksize=16384 remote_connect="ssh -i /root/.ssh/id_labstore ${r_user}@${r_host}" @@ -44,6 +50,8 @@ $remote_connect "${SNAPSHOT_MGR} create ${r_snapshot_name} ${r_vg}/${r_lv} --force" + ${SNAPSHOT_MGR} create --size ${l_snapshot_size} ${l_snapshot_name} ${l_vg}/${l_lv} --force + $BDSYNC --blocksize=$blocksize \ --remdata "${remote_connect} 'nice -${remotenice} ${BDSYNC} --server'" \ $localdev "/dev/${r_vg}/${r_snapshot_name}" | \ diff --git a/modules/labstore/manifests/device_backup.pp b/modules/labstore/manifests/device_backup.pp index cef0a08..026dce4 100644 --- a/modules/labstore/manifests/device_backup.pp +++ b/modules/labstore/manifests/device_backup.pp @@ -3,7 +3,10 @@ $remote_vg, $remote_lv, $remote_snapshot, - $localdev, + $local_lv, + $local_vg, + $local_snapshot, + $local_snapshot_size, $weekday, $hour=0, $minute=0, @@ -26,10 +29,19 @@ cron { "block_sync-${remote_vg}/${remote_lv}=>${localdev}": ensure => 'present', user => 'root', - command => "${block_sync} ${remote_ip} ${remote_vg} ${remote_lv} ${remote_snapshot} ${localdev}", + command => "${block_sync} ${remote_ip} ${remote_vg} ${remote_lv} ${remote_snapshot} ${local_vg} ${local_lv} ${local_snapshot} ${local_snapshot_size}", weekday => $day[$weekday], hour => $hour, minute => $minute, - environment => 'MAILTO=labs-ad...@lists.wikimedia.org' + environment => 'MAILTO=labs-ad...@lists.wikimedia.org', + require => File['/usr/local/sbin/snapshot-manager'] + } + + file { '/usr/local/sbin/snapshot-manager': + ensure => present, + owner => 'root', + group => 'root', + mode => '0755', + source => 'puppet:///modules/labstore/snapshot-manager.py', } } diff --git a/modules/role/manifests/labs/nfs/secondary_backup/base.pp b/modules/role/manifests/labs/nfs/secondary_backup/base.pp index fd2a403..a1a54cd 100644 --- a/modules/role/manifests/labs/nfs/secondary_backup/base.pp +++ b/modules/role/manifests/labs/nfs/secondary_backup/base.pp @@ -6,6 +6,10 @@ include labstore::backup_keys + package { ['python3', 'python3-dateutil']: + ensure => present, + } + file {'/srv/backup': ensure => 'directory', } diff --git a/modules/role/manifests/labs/nfs/secondary_backup/misc.pp b/modules/role/manifests/labs/nfs/secondary_backup/misc.pp index 617ebd9..a3afb3c 100644 --- a/modules/role/manifests/labs/nfs/secondary_backup/misc.pp +++ b/modules/role/manifests/labs/nfs/secondary_backup/misc.pp @@ -8,13 +8,16 @@ } labstore::device_backup { 'secondary-misc': - remotehost => 'labstore1004.eqiad.wmnet', - remote_vg => 'misc', - remote_lv => 'misc-project', - remote_snapshot => 'misc-snap', - localdev => '/dev/backup/misc-project', - weekday => 'wednesday', - hour => 20, + remotehost => 'labstore1004.eqiad.wmnet', + remote_vg => 'misc', + remote_lv => 'misc-project', + remote_snapshot => 'misc-snap', + local_vg => 'backup', + local_lv => 'misc-project', + local_snapshot => 'misc-project-backup', + local_snapshot_size => '2T' + weekday => 'wednesday', + hour => 20, } } diff --git a/modules/role/manifests/labs/nfs/secondary_backup/tools.pp b/modules/role/manifests/labs/nfs/secondary_backup/tools.pp index fe0020f..e4e4a47 100644 --- a/modules/role/manifests/labs/nfs/secondary_backup/tools.pp +++ b/modules/role/manifests/labs/nfs/secondary_backup/tools.pp @@ -8,13 +8,16 @@ } labstore::device_backup { 'secondary-tools': - remotehost => 'labstore1004.eqiad.wmnet', - remote_vg => 'tools', - remote_lv => 'tools-project', - remote_snapshot => 'tools-snap', - localdev => '/dev/backup/tools-project', - weekday => 'tuesday', - hour => 20, + remotehost => 'labstore1004.eqiad.wmnet', + remote_vg => 'tools', + remote_lv => 'tools-project', + remote_snapshot => 'tools-snap', + local_vg => 'backup', + local_lv => 'tools-project', + local_snapshot => 'tools-project-backup', + local_snapshot_size => '2T' + weekday => 'tuesday', + hour => 20, } } -- To view, visit https://gerrit.wikimedia.org/r/334692 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic485bf5bce49581a71457f9dcf9802367e3c1c6e Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Madhuvishy <mviswanat...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits