-1

i have this list of ansible inventory

servers:
  - server01
  - server02
  - server03
  - server04

i want to do like this example I want: https://server01:8000;https://server02:8000],https://server03:8000;https://server04:8000

but using set_fact

ahmed
  • 39
  • 7

1 Answers1

2

You can use use a Jinja template to generate your desired output:

- hosts: localhost
  gather_facts: false
  vars:
    servers:
      - server01
      - server02
      - server03
      - server04
  tasks:
    - set_fact:
        urls: |-
          {% for server in servers -%}
          https://{{ server }}:8000{% if loop.index % 2 == 0 %}]{% endif %}{% if not loop.last %};{% endif %}
          {% endfor %}

    - debug:
        var: urls

The above playbook will output:

TASK [debug] *******************************************************************
ok: [localhost] => {
    "urls": "https://server01:8000;https://server02:8000];https://server03:8000;https://server04:8000]"
}
larsks
  • 277,717
  • 41
  • 399
  • 399