cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #05917
[Merge] ~raharper/cloud-init:fix/merge-how-docs into cloud-init:master
Ryan Harper has proposed merging ~raharper/cloud-init:fix/merge-how-docs into cloud-init:master.
Commit message:
doc: update merging doc with fixes and some additional details/examples
Update config merging documentation with cloud-config syntax fix. Add an
example showing how to merge two files with runcmd.
Requested reviews:
cloud-init commiters (cloud-init-dev)
For more details, see:
https://code.launchpad.net/~raharper/cloud-init/+git/cloud-init/+merge/362083
--
Your team cloud-init commiters is requested to review the proposed merge of ~raharper/cloud-init:fix/merge-how-docs into cloud-init:master.
diff --git a/doc/rtd/topics/merging.rst b/doc/rtd/topics/merging.rst
index c75ca59..3761305 100644
--- a/doc/rtd/topics/merging.rst
+++ b/doc/rtd/topics/merging.rst
@@ -21,12 +21,12 @@ For example.
.. code-block:: yaml
#cloud-config (1)
- run_cmd:
+ runcmd:
- bash1
- bash2
#cloud-config (2)
- run_cmd:
+ runcmd:
- bash3
- bash4
@@ -36,7 +36,7 @@ cloud-config object that contains the following.
.. code-block:: yaml
#cloud-config (merged)
- run_cmd:
+ runcmd:
- bash3
- bash4
@@ -45,7 +45,7 @@ Typically this is not what users want; instead they would likely prefer:
.. code-block:: yaml
#cloud-config (merged)
- run_cmd:
+ runcmd:
- bash1
- bash2
- bash3
@@ -164,8 +164,8 @@ string format (i.e. the second option above), for example:
.. code-block:: python
- {'merge_how': [{'name': 'list', 'settings': ['extend']},
- {'name': 'dict', 'settings': []},
+ {'merge_how': [{'name': 'list', 'settings': ['append']},
+ {'name': 'dict', 'settings': ['no_replace', 'recurse_list']},
{'name': 'str', 'settings': ['append']}]}
This would be the equivalent format for default string format but in dictionary
@@ -201,4 +201,43 @@ Note, however, that merge algorithms are not used *across* types of
configuration. As was the case before merging was implemented,
user-data will overwrite conf.d configuration without merging.
+Example cloud-config
+====================
+
+A common request is to include multiple ``runcmd`` directives in different
+files and merge all of the commands together. To achieve this, we must modify
+the default merging to allow for dictionaries to join list values.
+
+
+The first config
+
+.. code-block:: yaml
+
+ #cloud-config
+ merge_how:
+ - name: list
+ settings: [append]
+ - name: dict
+ settings: [no_replace, recurse_list]
+
+ runcmd:
+ - bash1
+ - bash2
+
+The second config
+
+.. code-block:: yaml
+
+ #cloud-config
+ merge_how:
+ - name: list
+ settings: [append]
+ - name: dict
+ settings: [no_replace, recurse_list]
+
+ runcmd:
+ - bash3
+ - bash4
+
+
.. vi: textwidth=78
Follow ups