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.

Reply via email to