On Thu, 17 Aug 2023 07:56:58 -0400
Todd Lewis <[email protected]> wrote:

>    bn:
>    - - basename
>      - dev_wss_db
>    - - basename
>      - dev_wss_db_requests
>    - - basename
>      - dev_bss_service_database
>    - - basename
>      - dev_bss_frontend_db
>    - - basename
>      - dev_mss_db
> 
> But I didn't find a way to map that using "community.general.dict" to create
> 
>    bn:
>    - basename: dev_wss_db
>    - basename: dev_wss_db_requests
>    - basename: dev_bss_service_database
>    - basename: dev_bss_frontend_db
>    - basename: dev_mss_db

You can always use brute-force Jinja as the last resort. For example,
given the list

  bn_list:
  - dev_wss_db
  - dev_wss_db_requests
  - dev_bss_service_database
  - dev_bss_frontend_db
  - dev_mss_db

the below Jinja creates the list of the hashes

  bn: |
    {% filter from_yaml %}
    {% for basename in bn_list %}
    - basename: {{ basename }}
    {% endfor %}
    {% endfilter %}

As a side-note, this is equivalent to

  bn: "{{ all_objects|
          map(attribute='Key')|
          map('regex_replace', bn_regex, '{basename: \\1}')|
          map('from_yaml') }}"
 
> This for me is one of the more frustrating things about Jinja
> pipelines. I keep wishing "map" would take arbitrary
> expressions rather than the limited set it's stuck with.

This is very good point. It would be possible to write such a filter.
However, I'm not sure about the security implications.

-- 
Vladimir Botka

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/20230817170740.038163cc%40gmail.com.

Attachment: pgpOgqpg7TAic.pgp
Description: OpenPGP digital signature

Reply via email to