Hello all,

I'm implementing a custom role to setup a bunch of network device profiles 
to be later associated to LXD containers.
A loop over a list of eth/br devices would be used to achieve this. The 
loop is not an issue but I'd like to implement a "when" condition so to 
attempt to create the bridge only when it is not there already.

To clarify further, the logic would be the following:
- for each element in the bridge mapping dictionary, run this: lxc profile 
show br_dev <key>
- if the command returns 1, the bridge does not exist, so let's create it 
in the next task
- run profile creation task: lxc profile create dev_br<key>
- run another task to associate the physical device to the profile

So, the problem: how do I prevent the subsequent tasks from running if the 
bridges already exist? I know the "when" clause is great to prevent a task 
from running in certain conditions, but what I want here is to run only 
part of the task (that is, only some parts of the loop).
I'm thinking of using the output of each command's "rc" stored in the 
register variable, but can't find a way to include it in my subsequent 
loops!
Any alternative, cleaner way is more then welcome. A colleague suggested, 
for instance, to rely on subtasks included as sub-yamls but I'm still 
thinking how to turn that into reality.

I feel I've been unclear, yet I'm confident your understanding skills are 
greater than my explanatory skills.

Thank you! I'm providing the files:

group_vars:

---
bridge_mapping:
  250: eth0
  150: eth0
  23: eth1

main role file:

---
- name: check if profile exists
  command: lxc profile show br_dev{{ item.1.id }}
  ignore_errors: yes
  register: profile_exists
  with_subelements:
  - exposure_alternative
  - vlans
  tags:
    - lxd_setup
    - lxd_profiles_create




- debug: var={{ item }}
  with_items: profile_exists.results
  tags:
    - debug


- name: setup lxd profile
  command: lxc profile create dev_br{{ item.key }}
  with_dict: bridge_mapping
  when: <what should be here?>
  tags:
    - lxd_setup
    - lxd_profiles_create


- name: setup lxd profile dev
  # sample command: lxc profile device add dev_br123 eth1 nic 
nictype=bridged parent br123
  command: lxc profile device add dev_br{{ item.key }} {{ item.value }} nic 
nictype=bridged parent=br{{ item.key }}
  with_dict: bridge_mapping
  when: <what should be here?>
  tags:
    - lxd_setup
    - lxd_profiles_create



-- 
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/1f5f3ff6-4b19-49e9-a241-1a487f59219b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to