coren has uploaded a new change for review.
https://gerrit.wikimedia.org/r/166351
Change subject: Labs: allow for growing volumes
......................................................................
Labs: allow for growing volumes
Also update role::labs::biglog to extend /var/log rather than
create a new volume (necessary for the new images)
Change-Id: I00abd321f3b1c06ce7a563bd3ace28bb9b3bd2d6
---
M manifests/role/labsbiglogs.pp
A modules/labs_lvm/files/extend-instance-vol
A modules/labs_lvm/manifests/extend.pp
M modules/labs_lvm/manifests/init.pp
M modules/labs_lvm/manifests/volume.pp
5 files changed, 83 insertions(+), 2 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/51/166351/1
diff --git a/manifests/role/labsbiglogs.pp b/manifests/role/labsbiglogs.pp
index 9ca9bf0..257b2b6 100644
--- a/manifests/role/labsbiglogs.pp
+++ b/manifests/role/labsbiglogs.pp
@@ -3,5 +3,5 @@
$size = '8G'
) {
include labs_lvm
- labs_lvm::volume { 'logfile-disk': mountat => '/var/log', size => $size }
+ labs_lvm::extend { '/var/log': size => $size }
}
diff --git a/modules/labs_lvm/files/extend-instance-vol
b/modules/labs_lvm/files/extend-instance-vol
new file mode 100755
index 0000000..67fdf0f
--- /dev/null
+++ b/modules/labs_lvm/files/extend-instance-vol
@@ -0,0 +1,31 @@
+#! /bin/bash
+
+mount="$1"; shift
+size="$1"; shift
+sopt="-L $size"
+
+if (/bin/echo "$size"|/bin/grep -q '%'); then
+ sopt="-l $size"
+fi
+
+if ! mountpoint -q "$mount"; then
+ echo "$0: $mount is not a mountpoint" >&2
+ exit 1
+fi
+
+volume=$(grep "\S* $mount " /proc/mounts | cut -d ' ' -f 1 | tail -n 1)
+if [ "x$volume" = "x" -o ! -b "$volume" ]; then
+ echo "$0: unable to find device for $mount" >&2
+ exit 1
+fi
+if ! /sbin/lvs "$volume" >/dev/null 2>&1; then
+ echo "$0: $mount is not a logical volume" >&2
+ exit 1
+fi
+
+if /sbin/lvextend -t $sopt "$volume" >/dev/null 2>&1; then
+ /sbin/lvextend -r $sopt "$volume"
+ exit
+fi
+
+exit 0
diff --git a/modules/labs_lvm/manifests/extend.pp
b/modules/labs_lvm/manifests/extend.pp
new file mode 100644
index 0000000..7e9dae1
--- /dev/null
+++ b/modules/labs_lvm/manifests/extend.pp
@@ -0,0 +1,36 @@
+# resource: labs_lvm::volume
+#
+# labs_lvm::volume allocates a LVM volume from the volume group
+# created by the labs_lvm class.
+#
+# Parameters:
+# mountat => point where the volume is to be mounted; defaults
+# to the title
+# size => desired size of the volume, using the lvcreate(8)
+# syntax. This can only /extend/ the volume size.
+#
+# Requires:
+# The node must have included the labs_lvm class.
+#
+# Sample Usage:
+# labs_lvm::volume { 'storage': mountat => '/mnt' }
+#
+
+define labs_lvm::extend(
+ $mountat = $title,
+ $mountowner = 'root',
+ $mountgroup = 'root',
+ $mountmode = '755',
+ $size = '100%FREE',
+) {
+
+ exec { "extend-vd-$mountat":
+ logoutput => 'on_failure',
+ require => [
+ File['/usr/local/sbin/extend-instance-vol'],
+ ],
+ command => "/usr/local/sbin/extend-instance-vol '$mountat'
'$size'",
+ }
+
+}
+
diff --git a/modules/labs_lvm/manifests/init.pp
b/modules/labs_lvm/manifests/init.pp
index a4a0e7c..85eb8e1 100644
--- a/modules/labs_lvm/manifests/init.pp
+++ b/modules/labs_lvm/manifests/init.pp
@@ -35,6 +35,15 @@
group => 'root',
}
+ file { '/usr/local/sbin/extend-instance-vol':
+ ensure => file,
+ source => 'puppet:///modules/labs_lvm/extend-instance-vol',
+ require => Package['lvm2'],
+ mode => 0544,
+ owner => 'root',
+ group => 'root',
+ }
+
exec { 'create-volume-group':
logoutput => 'on_failure',
unless => '/sbin/vgdisplay -c vd',
diff --git a/modules/labs_lvm/manifests/volume.pp
b/modules/labs_lvm/manifests/volume.pp
index 7336cf3..7b4cc4a 100644
--- a/modules/labs_lvm/manifests/volume.pp
+++ b/modules/labs_lvm/manifests/volume.pp
@@ -39,7 +39,7 @@
) {
exec { "create-vd-$volname":
creates => "/dev/vd/$volname",
- unless => "/sbin/lvdisplay -c vd/$volname",
+ unless => "/bin/mountpoint -q '$mountat'",
logoutput => 'on_failure',
require => [
File['/usr/local/sbin/make-instance-vol'],
@@ -67,5 +67,10 @@
],
}
+ labs_lvm::extend { $mountat:
+ size => $size,
+ require => [ Mount[$mountat] ],
+ }
+
}
--
To view, visit https://gerrit.wikimedia.org/r/166351
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I00abd321f3b1c06ce7a563bd3ace28bb9b3bd2d6
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: coren <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits