diff --git a/bootstrapvz/plugins/docker_daemon/__init__.py b/bootstrapvz/plugins/docker_daemon/__init__.py index c952878..f32e6b1 100644 --- a/bootstrapvz/plugins/docker_daemon/__init__.py +++ b/bootstrapvz/plugins/docker_daemon/__init__.py @@ -21,3 +21,4 @@ def resolve_tasks(taskset, manifest): taskset.add(tasks.AddDockerDeps) taskset.add(tasks.AddDockerBinary) taskset.add(tasks.AddDockerInit) + taskset.add(tasks.EnableMemoryCgroup) diff --git a/bootstrapvz/plugins/docker_daemon/tasks.py b/bootstrapvz/plugins/docker_daemon/tasks.py index b2b1bbe..d44a661 100644 --- a/bootstrapvz/plugins/docker_daemon/tasks.py +++ b/bootstrapvz/plugins/docker_daemon/tasks.py @@ -1,6 +1,8 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases +from bootstrapvz.common.tasks import boot from bootstrapvz.common.tasks import initd +from bootstrapvz.providers.gce.tasks import boot as gceboot import os import os.path import shutil @@ -45,3 +47,16 @@ class AddDockerInit(Task): default_src = os.path.join(ASSETS_DIR, 'default/docker') default_dest = os.path.join(info.root, 'etc/default/docker') shutil.copy(default_src, default_dest) + + +class EnableMemoryCgroup(Task): + description = 'Change grub configuration to enable the memory cgroup' + phase = phases.system_modification + successors = [boot.InstallGrub] + predecessors = [boot.ConfigureGrub, gceboot.ConfigureGrub] + + @classmethod + def run(cls, info): + from bootstrapvz.common.tools import sed_i + grub_config = os.path.join(info.root, 'etc/default/grub') + sed_i(grub_config, r'^(GRUB_CMDLINE_LINUX*=".*)"\s*$', r'\1 cgroup_enable=memory"')