[MediaWiki-commits] [Gerrit] operations/puppet[production]: docker: refactor the storage setup, allow thick pools
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
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