From 6bb167f36144efb3ce94a9e2c385b8ee8b80fad8 Mon Sep 17 00:00:00 2001 From: Marcin Engelmann Date: Thu, 11 Jan 2018 17:46:00 +0100 Subject: [PATCH] Clear the machine ID for jessie and newer releases (systemd) (resolves #427) --- bootstrapvz/common/task_groups.py | 16 ++++++++++++---- bootstrapvz/common/tasks/cleanup.py | 17 +++++++++++++++++ bootstrapvz/providers/docker/__init__.py | 2 +- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/bootstrapvz/common/task_groups.py b/bootstrapvz/common/task_groups.py index 33db010..e3ac91a 100644 --- a/bootstrapvz/common/task_groups.py +++ b/bootstrapvz/common/task_groups.py @@ -35,7 +35,7 @@ def get_standard_groups(manifest): group.extend(security_group) group.extend(get_locale_group(manifest)) group.extend(get_bootloader_group(manifest)) - group.extend(cleanup_group) + group.extend(get_cleanup_group(manifest)) return group @@ -200,9 +200,17 @@ def get_fs_specific_group(manifest): return list(group) -cleanup_group = [cleanup.ClearMOTD, - cleanup.CleanTMP, - ] +def get_cleanup_group(manifest): + from bootstrapvz.common.releases import jessie + + group = [cleanup.ClearMOTD, + cleanup.CleanTMP, + ] + + if manifest.release >= jessie: + group.append(cleanup.ClearMachineId) + + return group rollback_map = {workspace.CreateWorkspace: workspace.DeleteWorkspace, diff --git a/bootstrapvz/common/tasks/cleanup.py b/bootstrapvz/common/tasks/cleanup.py index 442f8f8..ab104b5 100644 --- a/bootstrapvz/common/tasks/cleanup.py +++ b/bootstrapvz/common/tasks/cleanup.py @@ -30,3 +30,20 @@ class CleanTMP(Task): log = os.path.join(info.root, 'var/log/') os.remove(os.path.join(log, 'bootstrap.log')) os.remove(os.path.join(log, 'dpkg.log')) + + +class ClearMachineId(Task): + description = 'Clearing the Machine ID' + phase = phases.system_cleaning + + @classmethod + def run(cls, info): + import logging + log = logging.getLogger(__name__) + for machineid_file in [os.path.join(info.root, f) for f in ['etc/machine-id', 'var/lib/dbus/machine-id']]: + if os.path.isfile(machineid_file): + log.debug(machineid_file + ' found, clearing') + with open(machineid_file, 'w'): + pass + else: + log.debug(machineid_file + ' not found, not clearing') diff --git a/bootstrapvz/providers/docker/__init__.py b/bootstrapvz/providers/docker/__init__.py index 3d36a6c..05a16a0 100644 --- a/bootstrapvz/providers/docker/__init__.py +++ b/bootstrapvz/providers/docker/__init__.py @@ -21,7 +21,7 @@ def resolve_tasks(taskset, manifest): taskset.update(task_groups.get_apt_group(manifest)) taskset.update(task_groups.get_locale_group(manifest)) taskset.update(task_groups.security_group) - taskset.update(task_groups.cleanup_group) + taskset.update(task_groups.get_cleanup_group(manifest)) # Let the autostart of daemons by apt remain disabled taskset.discard(apt.EnableDaemonAutostart)