← Back to team overview

cloud-init-dev team mailing list archive

Re: [Merge] ~raharper/cloud-init:fix/merge-how-docs into cloud-init:master

 

I'll look at the tool/ccfg-merge-debug; but it didn't look immediately helpful, so I ended up launching an lxd container with two files in /etc/cloud/cloud.cfg.d/ and using cloud-init clean --logs --reboot instead.

I'll take a second look at the tool.


Diff comments:

> 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
> @@ -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]

Yes and no.  I can clarify though.  If you are the *first* config to include the key you're interested in, and you're sure that no other config file will get read before you (in which case you'll clobber it) then no.

I found this troublesome and really wanted a *global* way to configure merging for *all* configs, but that's not available at this time.  This is the only way to ensure that conflicting keys retain data (the default is to overwrite dictionaries and lists).

> +
> +   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


-- 
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.


References