Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for overlay2.size setting used to limit container storage usage #1014

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ The following parameters are available in the `docker` class:
* [`dm_blkdiscard`](#-docker--dm_blkdiscard)
* [`dm_override_udev_sync_check`](#-docker--dm_override_udev_sync_check)
* [`overlay2_override_kernel_check`](#-docker--overlay2_override_kernel_check)
* [`overlay2_size`](#-docker--overlay2_size)
* [`manage_package`](#-docker--manage_package)
* [`service_name`](#-docker--service_name)
* [`docker_users`](#-docker--docker_users)
Expand Down Expand Up @@ -736,6 +737,16 @@ Overrides the Linux kernel version check allowing using overlay2 with kernel < 4

Default value: `$docker::params::overlay2_override_kernel_check`

##### <a name="-docker--overlay2_size"></a>`overlay2_size`

Data type: `Optional[String]`

Sets the default max size of the container. It is supported only when the
backing filesystem is xfs and mounted with pquota mount option.
storage_driver needs to be set explicitely to overlay2 to be respected.

Default value: `$docker::params::overlay2_size`

##### <a name="-docker--manage_package"></a>`manage_package`

Data type: `Boolean`
Expand Down Expand Up @@ -1590,6 +1601,7 @@ The following parameters are available in the `docker::service` class:
* [`dm_blkdiscard`](#-docker--service--dm_blkdiscard)
* [`dm_override_udev_sync_check`](#-docker--service--dm_override_udev_sync_check)
* [`overlay2_override_kernel_check`](#-docker--service--overlay2_override_kernel_check)
* [`overlay2_size`](#-docker--service--overlay2_size)
* [`storage_devs`](#-docker--service--storage_devs)
* [`storage_vg`](#-docker--service--storage_vg)
* [`storage_root_size`](#-docker--service--storage_root_size)
Expand Down Expand Up @@ -2040,6 +2052,14 @@ Data type: `Boolean`

Default value: `$docker::overlay2_override_kernel_check`

##### <a name="-docker--service--overlay2_size"></a>`overlay2_size`

Data type: `Optional[String]`



Default value: `$docker::overlay2_size`

##### <a name="-docker--service--storage_devs"></a>`storage_devs`

Data type: `Optional[String]`
Expand Down
6 changes: 6 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,11 @@
# @param overlay2_override_kernel_check
# Overrides the Linux kernel version check allowing using overlay2 with kernel < 4.0.
#
# @param overlay2_size
# Sets the default max size of the container.
# It is supported only when the backing filesystem is xfs and mounted with pquota mount option.
# storage_driver needs to be set explicitely to overlay2 to be respected.
#
# @param manage_package
# Won't install or define the docker package, useful if you want to use your own package
#
Expand Down Expand Up @@ -433,6 +438,7 @@
Optional[Boolean] $dm_blkdiscard = $docker::params::dm_blkdiscard,
Optional[Boolean] $dm_override_udev_sync_check = $docker::params::dm_override_udev_sync_check,
Boolean $overlay2_override_kernel_check = $docker::params::overlay2_override_kernel_check,
Optional[String] $overlay2_size = $docker::params::overlay2_size,
Optional[String] $execdriver = $docker::params::execdriver,
Boolean $manage_package = $docker::params::manage_package,
Optional[String] $package_source = $docker::params::package_source,
Expand Down
1 change: 1 addition & 0 deletions manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
$dm_blkdiscard = undef
$dm_override_udev_sync_check = undef
$overlay2_override_kernel_check = false
$overlay2_size = undef
$manage_package = true
$package_source = undef
$service_name_default = 'docker'
Expand Down
5 changes: 5 additions & 0 deletions manifests/service.pp
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@
#
# @param overlay2_override_kernel_check
#
# @param overlay2_size
#
# @param storage_devs
#
# @param storage_vg
Expand Down Expand Up @@ -230,6 +232,7 @@
Optional[Boolean] $dm_blkdiscard = $docker::dm_blkdiscard,
Optional[Boolean] $dm_override_udev_sync_check = $docker::dm_override_udev_sync_check,
Boolean $overlay2_override_kernel_check = $docker::overlay2_override_kernel_check,
Optional[String] $overlay2_size = $docker::overlay2_size,
Optional[String] $storage_devs = $docker::storage_devs,
Optional[String] $storage_vg = $docker::storage_vg,
Optional[String] $storage_root_size = $docker::storage_root_size,
Expand Down Expand Up @@ -416,6 +419,7 @@
'dm_blkdiscard' => $dm_blkdiscard,
'dm_override_udev_sync_check' => $dm_override_udev_sync_check,
'overlay2_override_kernel_check' => $overlay2_override_kernel_check,
'overlay2_size' => $overlay2_size,
}

if $storage_config {
Expand Down Expand Up @@ -480,6 +484,7 @@
'dm_blkdiscard' => $dm_blkdiscard,
'dm_override_udev_sync_check' => $dm_override_udev_sync_check,
'overlay2_override_kernel_check' => $overlay2_override_kernel_check,
'overlay2_size' => $overlay2_size,
'labels' => $labels,
'extra_parameters' => $extra_parameters,
'extra_parameters_array' => $extra_parameters_array,
Expand Down
1 change: 1 addition & 0 deletions spec/classes/init_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@
'nuget_package_provider_version' => defaults['nuget_package_provider_version'],
'os_lc' => defaults['os_lc'],
'overlay2_override_kernel_check' => defaults['overlay2_override_kernel_check'],
'overlay2_size' => defaults['overlay2_size'],
'package_release' => defaults['package_release'],
'package_source' => defaults['package_source'],
'pin_upstream_package_source' => defaults['pin_upstream_package_source'],
Expand Down
2 changes: 2 additions & 0 deletions spec/helper/get_defaults.rb
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def get_defaults(_facts)
nuget_package_provider_version = :undef
os_lc = _facts[:os]['name']
overlay2_override_kernel_check = false
overlay2_size = :undef
package_source = :undef
proxy = :undef
registry_mirror = :undef
Expand Down Expand Up @@ -399,6 +400,7 @@ def get_defaults(_facts)
'nuget_package_provider_version' => nuget_package_provider_version,
'os_lc' => os_lc,
'overlay2_override_kernel_check' => overlay2_override_kernel_check,
'overlay2_size' => overlay2_size,
'package_ce_key_id' => package_ce_key_id,
'package_ce_key_source' => package_ce_key_source,
'package_ce_release' => package_ce_release,
Expand Down
1 change: 1 addition & 0 deletions templates/etc/conf.d/docker.epp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ other_args="<% -%>
<%- if $dm_override_udev_sync_check { %> --storage-opt dm.override_udev_sync_check=<%= $dm_override_udev_sync_check %><% } -%>
<% } elsif $storage_driver == 'overlay2' { -%>
<%- if $overlay2_override_kernel_check { %> --storage-opt overlay2.override_kernel_check=<%= $overlay2_override_kernel_check %><% } -%>
<%- if $overlay2_size { %> --storage-opt overlay2.size=<%= $overlay2_size %><% } -%>
<% } -%>
<% $labels.each |$label| { %> --label <%= $label %><% } -%>
<% if $extra_parameters { %><% $extra_parameters_array.each |$param| { %> <%= $param %><% } %><% } -%>
Expand Down
1 change: 1 addition & 0 deletions templates/etc/conf.d/docker.gentoo.epp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ DOCKER_OPTS="<% -%>
<%- if $dm_override_udev_sync_check { %> --storage-opt dm.override_udev_sync_check=<%= $dm_override_udev_sync_check %><% } %>
<% } elsif $storage_driver == 'overlay2' { -%>
<%- if $overlay2_override_kernel_check { %> --storage-opt overlay2.override_kernel_check=<%= $overlay2_override_kernel_check %><% } %>
<%- if $overlay2_size { %> --storage-opt overlay2.size=<%= $overlay2_size %><% } %>
<% } -%>
<% $labels.each |$label| { %> --label <%= $label %><% } %>
<% if $extra_parameters { %><% $extra_parameters_array.each |$param| { %> <%= $param %><% } %><% } %>
Expand Down
1 change: 1 addition & 0 deletions templates/etc/default/docker.epp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ DOCKER_OPTS="\
<%- if $dm_override_udev_sync_check { %> --storage-opt dm.override_udev_sync_check=<%= $dm_override_udev_sync_check %><% } -%>
<% } elsif $storage_driver == 'overlay2' { -%>
<%- if $overlay2_override_kernel_check { %> --storage-opt overlay2.override_kernel_check=<%= $overlay2_override_kernel_check %><% } -%>
<%- if $overlay2_size { %> --storage-opt overlay2.size=<%= $overlay2_size %><% } -%>
<% } -%>
<% $labels.each |$label| { %> --label <%= $label %><% } -%>
<% if $extra_parameters { %><% $extra_parameters_array.each |$param| { %> <%= $param %><% } %><% } -%>
Expand Down
1 change: 1 addition & 0 deletions templates/etc/sysconfig/docker-storage.epp
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,6 @@ DOCKER_STORAGE_OPTIONS="<% -%>
<%- if $dm_override_udev_sync_check { %> --storage-opt dm.override_udev_sync_check=<%= $dm_override_udev_sync_check %><% } -%>
<% } elsif $storage_driver == 'overlay2' { -%>
<%- if $overlay2_override_kernel_check { %> --storage-opt overlay2.override_kernel_check=<%= $overlay2_override_kernel_check %><% } -%>
<%- if $overlay2_size { %> --storage-opt overlay2.size=<%= $overlay2_size %><% } -%>
<% } -%>
"