This looked promising, except that cli is not available on my ansible v
2.14.2 using python 3.11.2
`Error was a <class ''ImportError''>, original message: cannot import name
''cli'' from ''__main__'' (/usr/bin/ansible-playbook)'`
On Tuesday, March 15, 2016 at 12:40:13 PM UTC-7 Mike Biancaniello wrote:
> It sounds like you want to instruct a task to execute ONLY if a tag is
> present (skip if tag not set). I've seen that request before, but no idea
> if it may or may not be implemented.
>
> I wonder if a vars_plugin or lookup_plugin might work.....
>
> would this work?
>
> # file ./lookup_plugins/get_tags.py
> from __future__ import (absolute_import, division, print_function)
>
> from ansible.plugins.lookup import LookupBase
> from __main__ import cli
>
> class LookupModule(LookupBase):
>
> def run(self, terms='', **kwargs):
> tags = cli.get_opt('tags').split(',')
> return [ tags ]
>
>
>
> # file ./stuff.yml
> ---
> - name: stuff
> hosts: localhost
> connection: local
> gather_facts: no
>
> vars:
> ansible_tags: "{{ lookup('get_tags') }}"
>
> tasks:
> - name: show me tags
> debug: msg="tags = {{ ansible_tags }}"
> tags:
> - always
> - name: Run this only and only if the tag was defined
>
> debug: msg="I am tagged, therefore I run"
> when: "'myspecialtag' in ansible_tags"
> tags:
> - myspecialtag
>
>
>
> output:
> ansible-playbook stuff.yml
>
> PLAY [stuff]
> *******************************************************************
>
> TASK [show me tags]
> ************************************************************
> ok: [localhost] => {
> "msg": "tags = [u'all']"
> }
>
> TASK [Run this only and only if the tag was defined]
> ***************************
> skipping: [localhost]
>
> PLAY RECAP
> *********************************************************************
> localhost : ok=1 changed=0 unreachable=0 failed=
> 0
>
>
>
> $ ansible-playbook stuff.yml --tags=myspecialtag
>
> PLAY [stuff]
> *******************************************************************
>
> TASK [show me tags]
> ************************************************************
> ok: [localhost] => {
> "msg": "tags = [u'myspecialtag']"
> }
>
> TASK [Run this only and only if the tag was defined]
> ***************************
> ok: [localhost] => {
> "msg": "I am tagged, therefore I run"
> }
>
> PLAY RECAP
> *********************************************************************
> localhost : ok=2 changed=0 unreachable=0 failed=
> 0
>
>
>
>
>
--
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/9a2002e7-bbef-47d0-a9ba-dc8cf7242eaen%40googlegroups.com.