diff options
author | Scott Moser <smoser@ubuntu.com> | 2012-04-05 00:49:11 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2012-04-05 00:49:11 -0400 |
commit | c2a4447527d5e8b2e2999b6f1832577203a64f2a (patch) | |
tree | aa58108146e35f5ab5d93500c1116bcad12d6ce8 /cloud-init.py | |
parent | b39abf5bbe51d62d1ef1dd1e813720eafc1ddc85 (diff) | |
parent | 6d62fe860f55faf2d7b0b6216c11305e114c5214 (diff) | |
download | vyos-cloud-init-c2a4447527d5e8b2e2999b6f1832577203a64f2a.tar.gz vyos-cloud-init-c2a4447527d5e8b2e2999b6f1832577203a64f2a.zip |
Allow a url to cloud-config data to be specified on kernel config line
In order to allow an ephemeral, or otherwise pristine image to
receive some configuration, cloud-init will read a url directed by
the kernel command line and proceed as if its data had previously existed.
For more information, see doc/kernel-cmdline.txt
Diffstat (limited to 'cloud-init.py')
-rwxr-xr-x | cloud-init.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/cloud-init.py b/cloud-init.py index 9e0a0405..3261e3f3 100755 --- a/cloud-init.py +++ b/cloud-init.py @@ -28,6 +28,7 @@ import cloudinit.CloudConfig as CC import cloudinit.DataSource as ds import cloudinit.netinfo as netinfo import time +import traceback import logging import errno import os @@ -67,6 +68,30 @@ def main(): warn("unable to open /proc/uptime\n") uptime = "na" + cmdline_msg = None + cmdline_exc = None + if cmd == "start": + target = "%s.d/%s" % (cloudinit.system_config, + "91_kernel_cmdline_url.cfg") + if os.path.exists(target): + cmdline_msg = "cmdline: %s existed" % target + else: + cmdline=util.get_cmdline() + try: + (key, url, content) = cloudinit.get_cmdline_url( + cmdline=cmdline) + if key and content: + util.write_file(target, content, mode=0600) + cmdline_msg = ("cmdline: wrote %s from %s, %s" % + (target, key, url)) + elif key: + cmdline_msg = ("cmdline: %s, %s had no cloud-config" % + (key, url)) + except Exception: + cmdline_exc = ("cmdline: '%s' raised exception\n%s" % + (cmdline, traceback.format_exc())) + warn(cmdline_exc) + try: cfg = cloudinit.get_base_cfg(cfg_path) except Exception as e: @@ -86,6 +111,11 @@ def main(): cloudinit.logging_set_from_cfg(cfg) log = logging.getLogger() + if cmdline_exc: + log.debug(cmdline_exc) + elif cmdline_msg: + log.debug(cmdline_msg) + try: cloudinit.initfs() except Exception as e: |