diff --git a/plugins/cloud_init/__init__.py b/plugins/cloud_init/__init__.py index d80033f..df3a11c 100644 --- a/plugins/cloud_init/__init__.py +++ b/plugins/cloud_init/__init__.py @@ -27,7 +27,16 @@ def resolve_tasks(tasklist, manifest): from tasks import DisableModules from providers.ec2.tasks.initd import AddEC2InitScripts from common.tasks import initd - tasklist.add(SetUsername, AutoSetMetadataSource, SetMetadataSource, DisableModules) + + options = manifest.plugins['cloud_init'] + tasklist.add(AutoSetMetadataSource) + if 'username' in options: + tasklist.add(SetUsername) + if 'disable_modules' in options: + tasklist.add(DisableModules) + if 'metadata_sources' in options: + tasklist.add(SetMetadataSource) + tasklist.remove(AddEC2InitScripts, initd.AddExpandRoot, initd.AdjustExpandRootScript, diff --git a/plugins/cloud_init/tasks.py b/plugins/cloud_init/tasks.py index df8f917..5613a56 100644 --- a/plugins/cloud_init/tasks.py +++ b/plugins/cloud_init/tasks.py @@ -68,9 +68,13 @@ class DisableModules(Task): patterns = patterns + ")$" regex = re.compile(patterns) - f = open(info.root + "/etc/cloud/cloud.cfg") - lines = f.readlines() - f.close() + try: + f = open(info.root + "/etc/cloud/cloud.cfg") + lines = f.readlines() + f.close() + except: + print "Cannot read cloud.cfg" + return -1 f = open(info.root + "/etc/cloud/cloud.cfg", "w") for line in lines: