[MediaWiki-commits] [Gerrit] operations/puppet[production]: docker: refactor the storage setup, allow thick pools

2016-10-24 Thread Giuseppe Lavagetto (Code Review)
Giuseppe Lavagetto has submitted this change and it was merged.

Change subject: docker: refactor the storage setup, allow thick pools
..


docker: refactor the storage setup, allow thick pools

Since the lvm2 version on debian jessie does not support thin pools,
refactor our docker storage configuration into separate profiles, which
I intended to do anyways.

Bug: T147181
Change-Id: Ic5c1075ff7448dd9751cf596c93bdd1b99b5ef80
---
M hieradata/role/common/kubernetes/worker.yaml
M modules/profile/manifests/docker/engine.pp
A modules/profile/manifests/docker/storage.pp
A modules/profile/manifests/docker/storage/thinpool.pp
M modules/role/manifests/kubernetes/worker.pp
5 files changed, 173 insertions(+), 78 deletions(-)

Approvals:
  Giuseppe Lavagetto: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/hieradata/role/common/kubernetes/worker.yaml 
b/hieradata/role/common/kubernetes/worker.yaml
index bda5b48..90f7fb7 100644
--- a/hieradata/role/common/kubernetes/worker.yaml
+++ b/hieradata/role/common/kubernetes/worker.yaml
@@ -1,3 +1,3 @@
-profile::docker::engine::physical_volumes: "/dev/md2"
+profile::docker::storage::physical_volumes: "/dev/md2"
 profile::docker::engine::version: "1.12.2-0~jessie"
 profile::docker::engine::proxy: "http://webproxy.%{::site}.wmnet:8080";
diff --git a/modules/profile/manifests/docker/engine.pp 
b/modules/profile/manifests/docker/engine.pp
index af05650..5c8417e 100644
--- a/modules/profile/manifests/docker/engine.pp
+++ b/modules/profile/manifests/docker/engine.pp
@@ -4,16 +4,9 @@
 # devicemapper storage driver to work.
 # to work
 class profile::docker::engine {
-# Parameters that need to be defined in hiera
-$physical_volumes = hiera('profile::docker::engine::physical_volumes')
 
 # Optional parameters
-# Volume group to substitute
-$vg_to_remove = hiera('profile::docker::engine::vg_to_remove', undef)
 $docker_settings = hiera('profile::docker::engine::settings', {})
-# Size of the thin pool and the metadata pool.
-$lv_extents = hiera('profile::docker::engine::lv_extents', '95%VG')
-$pool_metadata_size = hiera('profile::docker::engine::lvm_metadata_size', 
undef)
 # Version to install; the default is not to pick one.
 $docker_version = hiera('profile::docker::engine::version', 'present')
 $apt_proxy = hiera('profile::docker::engine::proxy', undef)
@@ -25,77 +18,15 @@
 proxy   => $apt_proxy,
 }
 
-# Storage
-if $vg_to_remove {
-volume_group { $vg_to_remove:
-ensure   => absent,
-physical_volumes => [],
-}
-}
-$basic_lv_params = {
-extents  => $lv_extents,
-thinpool => true,
-mounted  => false,
-createfs => false,
-}
-
-$lv_params = $pool_metadata_size ? {
-undef   => $basic_lv_params,
-default => merge($basic_lv_params, {'poolmetadatasize' => 
$pool_metadata_size}),
-}
-
-$logical_volumes = {
-'thinpool' => $lv_params,
-}
-
-$volume_group = {
-docker => {
-ensure   => present,
-physical_volumes => $physical_volumes,
-logical_volumes  => $logical_volumes,
-}
-}
-
-class { 'lvm':
-manage_pkg=> true,
-volume_groups => $volume_group,
-}
-
-file { '/etc/lvm/profile/':
-ensure => directory,
-owner  => 'root',
-group  => 'root',
-mode   => '0555',
-}
-
-file { '/etc/lvm/profile/docker-thinpool.profile':
-ensure => present,
-owner  => 'root',
-group  => 'root',
-mode   => '0444',
-source => 'puppet:///modules/profile/docker/lvm.profile',
-}
-
-exec { 'Attach profile to docker thinpool':
-command => '/sbin/lvchange --metadataprofile docker-thinpool 
docker/thinpool',
-unless  => '/sbin/lvs -o lv_profile docker/thinpool | grep -q docker',
-require => [
-File['/etc/lvm/profile/docker-thinpool.profile'],
-Logical_volume['thinpool']
-],
-}
-
-$docker_storage_options = {
-'storage-driver' => 'devicemapper',
-'storage-opts'   =>  [
-'dm.thinpooldev=/dev/mapper/docker-thinpool-tpool',
-'dm.use_deferred_removal=true',
-'dm.use_deferred_deletion=true'
-]
-}
-
-
 # Docker config
+# Fetch the storage config from the related driver
+if defined(Class['::profile::docker::storage::thinpool']) {
+$docker_storage_options = 
$::profile::docker::storage::thinpool::options
+} else {
+$docker_storage_options = $::profile::docker::storage::options
+}
+
+# We need to import one storage config
 class { 'docker::configuration':
 settings => merge($docker_settings, $docker_storage_options),
 }
diff --git a/modules/profile/manifests/docker/storage.pp 
b/modules/prof

[MediaWiki-commits] [Gerrit] operations/puppet[production]: docker: refactor the storage setup, allow thick pools

2016-10-24 Thread Giuseppe Lavagetto (Code Review)
Giuseppe Lavagetto has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/317475

Change subject: docker: refactor the storage setup, allow thick pools
..

docker: refactor the storage setup, allow thick pools

Since the lvm2 version on debian jessie does not support thin pools,
refactor our docker storage configuration into separate profiles, which
I intended to do anyways.

Bug: T147181
Change-Id: Ic5c1075ff7448dd9751cf596c93bdd1b99b5ef80
---
M hieradata/role/common/kubernetes/worker.yaml
M modules/profile/manifests/docker/engine.pp
A modules/profile/manifests/docker/storage.pp
A modules/profile/manifests/docker/storage/thinpool.pp
M modules/role/manifests/kubernetes/worker.pp
5 files changed, 173 insertions(+), 78 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/75/317475/1

diff --git a/hieradata/role/common/kubernetes/worker.yaml 
b/hieradata/role/common/kubernetes/worker.yaml
index bda5b48..90f7fb7 100644
--- a/hieradata/role/common/kubernetes/worker.yaml
+++ b/hieradata/role/common/kubernetes/worker.yaml
@@ -1,3 +1,3 @@
-profile::docker::engine::physical_volumes: "/dev/md2"
+profile::docker::storage::physical_volumes: "/dev/md2"
 profile::docker::engine::version: "1.12.2-0~jessie"
 profile::docker::engine::proxy: "http://webproxy.%{::site}.wmnet:8080";
diff --git a/modules/profile/manifests/docker/engine.pp 
b/modules/profile/manifests/docker/engine.pp
index af05650..5c8417e 100644
--- a/modules/profile/manifests/docker/engine.pp
+++ b/modules/profile/manifests/docker/engine.pp
@@ -4,16 +4,9 @@
 # devicemapper storage driver to work.
 # to work
 class profile::docker::engine {
-# Parameters that need to be defined in hiera
-$physical_volumes = hiera('profile::docker::engine::physical_volumes')
 
 # Optional parameters
-# Volume group to substitute
-$vg_to_remove = hiera('profile::docker::engine::vg_to_remove', undef)
 $docker_settings = hiera('profile::docker::engine::settings', {})
-# Size of the thin pool and the metadata pool.
-$lv_extents = hiera('profile::docker::engine::lv_extents', '95%VG')
-$pool_metadata_size = hiera('profile::docker::engine::lvm_metadata_size', 
undef)
 # Version to install; the default is not to pick one.
 $docker_version = hiera('profile::docker::engine::version', 'present')
 $apt_proxy = hiera('profile::docker::engine::proxy', undef)
@@ -25,77 +18,15 @@
 proxy   => $apt_proxy,
 }
 
-# Storage
-if $vg_to_remove {
-volume_group { $vg_to_remove:
-ensure   => absent,
-physical_volumes => [],
-}
-}
-$basic_lv_params = {
-extents  => $lv_extents,
-thinpool => true,
-mounted  => false,
-createfs => false,
-}
-
-$lv_params = $pool_metadata_size ? {
-undef   => $basic_lv_params,
-default => merge($basic_lv_params, {'poolmetadatasize' => 
$pool_metadata_size}),
-}
-
-$logical_volumes = {
-'thinpool' => $lv_params,
-}
-
-$volume_group = {
-docker => {
-ensure   => present,
-physical_volumes => $physical_volumes,
-logical_volumes  => $logical_volumes,
-}
-}
-
-class { 'lvm':
-manage_pkg=> true,
-volume_groups => $volume_group,
-}
-
-file { '/etc/lvm/profile/':
-ensure => directory,
-owner  => 'root',
-group  => 'root',
-mode   => '0555',
-}
-
-file { '/etc/lvm/profile/docker-thinpool.profile':
-ensure => present,
-owner  => 'root',
-group  => 'root',
-mode   => '0444',
-source => 'puppet:///modules/profile/docker/lvm.profile',
-}
-
-exec { 'Attach profile to docker thinpool':
-command => '/sbin/lvchange --metadataprofile docker-thinpool 
docker/thinpool',
-unless  => '/sbin/lvs -o lv_profile docker/thinpool | grep -q docker',
-require => [
-File['/etc/lvm/profile/docker-thinpool.profile'],
-Logical_volume['thinpool']
-],
-}
-
-$docker_storage_options = {
-'storage-driver' => 'devicemapper',
-'storage-opts'   =>  [
-'dm.thinpooldev=/dev/mapper/docker-thinpool-tpool',
-'dm.use_deferred_removal=true',
-'dm.use_deferred_deletion=true'
-]
-}
-
-
 # Docker config
+# Fetch the storage config from the related driver
+if defined(Class['::profile::docker::storage::thinpool']) {
+$docker_storage_options = 
$::profile::docker::storage::thinpool::options
+} else {
+$docker_storage_options = $::profile::docker::storage::options
+}
+
+# We need to import one storage config
 class { 'docker::configuration':
 settings => merge($docker_settings, $docker_storage_options),
 }
diff --git a/modules/profile/manifes