If each mount was managed by a role, you could just apply those roles to the (groups holding) the relevant servers.
You'll need to have multiple data structures, one per role, but that's probably going to 'work with the grain' of Ansible better. On 26 April 2017 at 15:20, Frank Thommen <[email protected]> wrote: > Dear all, > > I'm at a loss as to how to filter entries fom a dictionry based von specific > host variables. In the concrete case we have a long list of possible NFS > mounts which should be applied according to the hosts' class. > > > Our hostlist would be like: > > host1 class=cluster > host2 class=cluster > host3 class=server > > > our dictionary of possible mounts would e.g. be: > > --- > /mnt/1: > name: /mnt/1 > src: server:/exports/1 > fstype: nfs > state: mounted > class: > - cluster > > /mnt/2: > name: /mnt/2 > src: server:/exports/2 > fstype: nfs > state: mounted > class: > - cluster > - server > > /mnt/3: > name: /mnt/3 > src: server:/exports/3 > fstype: nfs > state: mounted > class: > - cluster > ... > > > I.e I'd like all three mounts to be available on hosts of the class > "cluster" and /mnt/2 (but not the other two mounts) on hosts of the class > "server". > > The current playbook (which applies all mounts to all hosts) is > > --- > - hosts: '{{ target }}' > gather_facts: no > serial: 5 > > tasks: > - include_vars: > file: ./mounts-dict.yml > name: fs > > - name: "Add NFS mounts" > mount: > name: "{{ item.value.name }}" > fstype: "{{ item.value.fstype }}" > src: "{{ item.value.src }}" > state: "{{ item.value.state }}" > with_dict: "{{ fs }}" > ... > > > The playbook is run with `ansible-playbook ./nfs-mounts.yml > --extra-vars="target=<hostname>". > > What I'd need is a syntax, which checks for each mount in the dictionary, if > one of it's (possibly multiple) classes matches the (single) class of the > server and then applies the mount. I could not find a usable Jinja-Syntax > which I could use together with `when`. I'd appreciate any hint or pointer > to achieve this task. > > Thanks > frank > > > -- > 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/a0fbe52c-a1bc-f33e-985e-216dac495630%40drosera.ch. > For more options, visit https://groups.google.com/d/optout. -- 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/CAK5eLPRZ5oxxoZfyR-MuJF-B0%2BJnmaXmxzJz09poE%2BErKPwJdw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
