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

Reply via email to