summaryrefslogtreecommitdiff
path: root/doc/rtd/explanation/kernel-cmdline.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rtd/explanation/kernel-cmdline.rst')
-rw-r--r--doc/rtd/explanation/kernel-cmdline.rst69
1 files changed, 69 insertions, 0 deletions
diff --git a/doc/rtd/explanation/kernel-cmdline.rst b/doc/rtd/explanation/kernel-cmdline.rst
new file mode 100644
index 00000000..94f646f5
--- /dev/null
+++ b/doc/rtd/explanation/kernel-cmdline.rst
@@ -0,0 +1,69 @@
+.. _kernel_cmdline:
+
+Kernel command 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.
+
+This allows for configuring a metadata service, or some other data.
+
+.. note::
+ Usage of the kernel command line is somewhat of a last resort,
+ as it requires knowing in advance the correct command line or modifying
+ the boot loader to append data.
+
+For example, when :command:`cloud-init init --local` runs, it will check to
+see if ``cloud-config-url`` appears in key/value fashion in the kernel command
+line, as in:
+
+.. code-block:: text
+
+ root=/dev/sda ro cloud-config-url=http://foo.bar.zee/abcde
+
+``Cloud-init`` will then read the contents of the given URL. If the content
+starts with ``#cloud-config``, it will store that data to the local filesystem
+in a static filename :file:`/etc/cloud/cloud.cfg.d/91_kernel_cmdline_url.cfg`,
+and consider it as part of the config from that point forward.
+
+If that file exists already, it will not be overwritten, and the
+``cloud-config-url`` parameter is completely ignored.
+
+Then, when the datasource runs, it will find that config already available.
+
+So, to be able to configure the MAAS datasource by controlling the
+kernel command line from outside the image, you can append:
+
+.. code-block:: text
+
+ cloud-config-url=http://your.url.here/abcdefg
+
+Then, have the following content at that url:
+
+.. code-block:: yaml
+
+ #cloud-config
+ datasource:
+ MAAS:
+ metadata_url: http://mass-host.localdomain/source
+ consumer_key: Xh234sdkljf
+ token_key: kjfhgb3n
+ token_secret: 24uysdfx1w4
+
+.. warning::
+
+ ``url`` kernel command line key is deprecated.
+ Please use ``cloud-config-url`` parameter instead.
+
+.. note::
+
+ Since ``cloud-config-url=`` is so generic, in order to avoid false
+ positives, ``cloud-init`` requires the content to start with
+ ``#cloud-config`` for it to be considered.
+
+.. note::
+
+ The ``cloud-config-url=`` is un-authed http GET, and contains credentials.
+ It could be set up to be randomly generated and also to check the source
+ address in order to be more secure.