# dynamic variable  help

**URL:** <https://forum.ansible.com/t/dynamic-variable-help/35202>\
**Category:** Ansible Project\
**Created:** [May 20, 2021, 10:43am UTC](https://forum.ansible.com/t/dynamic-variable-help/35202 "2021-05-20T10:43:07Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Manoj\_Chander](https://avatars.discourse-cdn.com/v4/letter/m/71c47a/32.png) [@Manoj\_Chander](https://forum.ansible.com/u/Manoj_Chander)\
**Post date:** [May 20, 2021, 10:43am UTC](https://forum.ansible.com/t/dynamic-variable-help/35202/1 "2021-05-20T10:43:07Z")

</div>

Hi ,

Im a newbie learnig ansible .im stuck with the below

_I need to get input from user and based on input dynamically create a url ._

_input group1 is a single value and group2 is a list_

_using with\_items and loop im able to create variable but couldnt register it and pass it to get\_url module . below is one of my failed attempts ._

_ansible-playbook -e “app\_name=group1 or app\_name=group2 …”_

---

<div class="post-metadata">

**Author:** ![Andre\_Liebigt](https://avatars.discourse-cdn.com/v4/letter/a/c6cbf5/32.png) [@Andre\_Liebigt](https://forum.ansible.com/u/Andre_Liebigt)\
**Post date:** [May 21, 2021, 6:09am UTC](https://forum.ansible.com/t/dynamic-variable-help/35202/2 "2021-05-21T06:09:29Z")

</div>

Hi,

for this to work artifacturl always needs to be a list. A first attempt could look like this:

---

<div class="post-metadata">

**Author:** ![Manoj\_Chander](https://avatars.discourse-cdn.com/v4/letter/m/71c47a/32.png) [@Manoj\_Chander](https://forum.ansible.com/u/Manoj_Chander)\
**Post date:** [May 24, 2021, 1:46pm UTC](https://forum.ansible.com/t/dynamic-variable-help/35202/3 "2021-05-24T13:46:54Z")

</div>

Greetings André,

Thanks you so much for ur time.

The above solution works but i have some 100 jars to download .

Is it possible to set\_fact in a loop store the constructed variable in a list and pass it to **get\_url** method .

---

<div class="post-metadata">

**Author:** ![racke](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/racke/32/4767_2.png) [@racke](https://forum.ansible.com/u/racke)\
**Post date:** [May 24, 2021, 3:55pm UTC](https://forum.ansible.com/t/dynamic-variable-help/35202/4 "2021-05-24T15:55:48Z")

</div>

> Greetings André,
> 
> Thanks you so much for ur time.
> 
> The above solution works but i have some 100 jars to download .
> 
> Is it possible to set\_fact in a loop store the constructed variable in a list and pass it to \*get\_url\* method .
> 
> ---  
> - include\_vars:  
> file: vars.yml  
> - set\_fact:  
> b\_url: http://{{item}}/sr/pr/  
> # jar is a list in vars.yml  
> loop: "{{ jars }}"  
> register: b\_url  
> - debug:  
> msg: "no of sites are ==\> {{ b\_url }} "  
> - name: Container Checks  
> block:  
> - name: download "{{file }}"  
> get\_url:  
> url: "{{ item }}"  
> dest: "/manual/jar/"  
> loop: {{b\_url}}

Hello Manoj,

1) Using register in a set\_fact task doesn't make sense, as set\_fact is supposed to set the  
&nbsp;&nbsp;&nbsp;variables.

2) Do you really need to use set\_fact?

&nbsp;&nbsp;- name: download "{{file }}"  
&nbsp;&nbsp;&nbsp;&nbsp;get\_url:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url: "http://{{item}}/sr/pr/"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest: "/manual/jar/"  
&nbsp;&nbsp;&nbsp;&nbsp;loop: "{{ jars }}"

Regards  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Racke

> regards,  
> Manoj
> 
> &nbsp;&nbsp;&nbsp;&nbsp;Hi,
> 
> &nbsp;&nbsp;&nbsp;&nbsp;for this to work artifacturl always needs to be a list. A first attempt could look like this:
> 
> &nbsp;&nbsp;&nbsp;&nbsp;\*---\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\*- name: Block to Deploy on Servers\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* block:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - set\_fact:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* artifact\_url: "[https://my.url/&gt;&quot;\](https://my.url/&gt;&quot;%5C)\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - set\_fact:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* group\_id: "{% if app\_name == 'group1' %}/com/connectors/{% elif app\_name == 'group2' %}\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* /com/connectors/{%

else %}/com/services/{% endif %}"\*

> &nbsp;&nbsp;&nbsp;&nbsp;\* register: group\_id \*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* \*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - set\_fact:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* artifacturls: \*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - "{ artifact\_url }}{{ group\_id }}jar1/{{ app\_version }}/{{ item }}-{{ app\_version }}.jar"\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* \*\*- "{ artifact\_url

}}{{ group\_id }}jar2/{{ app\_version }}/{{ item }}-{{ app\_version }}.jar"\*

> &nbsp;&nbsp;&nbsp;&nbsp;\* when: app\_name == group2\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* \*  
> &nbsp;&nbsp;&nbsp;&nbsp;\*\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - set\_fact:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* artifacturls: \*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - "{ artifact\_url }}{{ group\_id }}{{ app\_name }}/{{ app\_version }}/{{ app\_name }}-{{ app\_version }}.jar"\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* when: app\_name != group2\*
> 
> &nbsp;&nbsp;&nbsp;&nbsp;/pass the constructed variable to another block /
> 
> &nbsp;&nbsp;&nbsp;&nbsp;\*- name: Block to get file "{{app\_name}}"\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* block:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - name: download "{{app\_name}}" form url\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* get\_url:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* url: "{{ item }}"\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* dest: "/manual/{{ app\_name }}.jar"\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* loop:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - {{ artifacturls }}\*
> 
> &nbsp;&nbsp;&nbsp;&nbsp;This leads to a bit of duplication for group2 which could be omitted by a more complex construct like this:
> 
> &nbsp;&nbsp;&nbsp;&nbsp;\* - set\_fact:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* artifacturls: "({{ artifact\_urls | default()) + {{ artifact\_url }}{{ group\_id }}{{ item }}/{{  
> &nbsp;&nbsp;&nbsp;&nbsp;app\_version }}/{{ item }}-{{ app\_version }}.jar"\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* when: app\_name == group2\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* loop:\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - jar1\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\* - jar2 \*  
> &nbsp;&nbsp;&nbsp;&nbsp;\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\*
> 
> &nbsp;&nbsp;&nbsp;&nbsp;Hope that helps,\*  
> &nbsp;&nbsp;&nbsp;&nbsp;\*  
> &nbsp;&nbsp;&nbsp;&nbsp;André
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hi ,
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Im a newbie learnig ansible .im stuck with the below
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/I need to get input from user and based on input dynamically create a url ./  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/input group1 is a single value and group2 is a list /  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/using with\_items and loop im able to create variable but

couldnt register it and pass it to get\_url module .

---

<div class="post-metadata">

**Author:** ![Manoj\_Chander](https://avatars.discourse-cdn.com/v4/letter/m/71c47a/32.png) [@Manoj\_Chander](https://forum.ansible.com/u/Manoj_Chander)\
**Post date:** [May 30, 2021, 7:27am UTC](https://forum.ansible.com/t/dynamic-variable-help/35202/5 "2021-05-30T07:27:05Z")

</div>

Hi racker,

Yeah I understood ,I finally found a way to use loop and loop\_var to build my list of variable and download them .

Thanks for Ur help really appreciate it .

Regards,  
Mano
