Are there any activity for this ? It is really must have feature because of impossibility to get all tags within huge playbooks, developed by large team.
четвер, 17 квітня 2014 р. 05:19:18 UTC+3 користувач Michael DeHaan написав: > > Sorry that --list-tags was meant to be just "--tags" > > ansible-playbook foo.yml --tags NotATagNameJustShowMeTheTags > > > On Wed, Apr 16, 2014 at 10:19 PM, Michael DeHaan <[email protected] > <javascript:>> wrote: > >> So yeah. >> >> There's been interest in adding such before, my requirement is usually >> that it uses the Playbook API to do these things. >> >> Some things are going to require a minor bit of refactoring to make some >> of that later. >> >> I generally want to avoid special code specific to /usr/bin/ansible >> commands that are not contained in playbook API code. >> >> I'd generally think needing the stats class would be "not it". >> >> Workaround for now has been to just specify an invalid tag and it will >> list available tags, so that is pretty close, but it happens >> as a result of a "live" run, so I understand that's not quite what you >> want. >> >> Example: >> >> ansible-playbook foo.yml --list-tags NotATagNameJustShowMeTheTags >> >> >> >> On Wed, Apr 16, 2014 at 3:38 AM, Michael Nelson <[email protected] >> <javascript:>> wrote: >> >>> On Fri, Mar 7, 2014 at 4:52 PM, Michael Nelson <[email protected] >>> <javascript:>> wrote: >>> > >>> > >>> > On Friday, 7 March 2014 16:31:45 UTC+1, Michael Nelson wrote: >>> >> >>> >> Hi! >>> >> >>> >> Just a heads-up that I'm thinking of adding a --list-tags option to >>> >> ansible-playbook. Let me know if there's a reason why that wouldn't >>> be a >>> >> good idea, or it's not needed etc. >>> >> >>> >> My use-case is that I'd like to know in advance whether a tag is >>> included >>> >> in the playbook, rather than running the playbook and erroring. I can >>> >> currently work around this by parsing the error output of >>> `ansible-playbook >>> >> --tags random-hash myplaybook`, but I'd like a nicer way :) >>> > >>> > >>> > Actually, I've just taken a look at the code and seen that, given that >>> I'm >>> > already using python helpers for the ansible support, I could just use >>> > ansible.playbook.Play().compare_tags() directly. So no change needed :) >>> > >>> >>> Just getting back to this - it seems quite complicated to get the tags >>> for a playbook... here's the helper function that I have: >>> >>> {{{ >>> def get_tags_for_playbook(playbook_path): >>> """Return all tags within a playbook.""" >>> # utils imported first to avoid circular import failure. >>> import ansible.utils >>> import ansible.callbacks >>> import ansible.playbook >>> stats = ansible.callbacks.AggregateStats() >>> callbacks = ansible.callbacks.PlaybookRunnerCallbacks(stats) >>> runner_callbacks = >>> ansible.callbacks.PlaybookRunnerCallbacks(stats) >>> playbook = ansible.playbook.PlayBook(playbook=playbook_path, >>> >>> callbacks=callbacks, >>> >>> runner_callbacks=runner_callbacks, >>> stats=stats) >>> myplay = ansible.playbook.Play(playbook, ds=playbook.playbook[0], >>> >>> basedir=os.path.dirname(playbook_path)) >>> >>> _, playbook_tags = myplay.compare_tags([]) >>> playbook_tags.remove('all') >>> return playbook_tags >>> }}} >>> >>> Perhaps it is worth a feature request - let me know if this should be >>> easier or if I've missed something above? >>> >>> Thanks. >>> -Michael >>> >>> -- >>> 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] <javascript:>. >>> To post to this group, send email to [email protected] >>> <javascript:>. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/ansible-project/CABgyWipybYRJGkwt4MgXgOZcWNEE4bYOiZZeuac8PeTCApebzw%40mail.gmail.com >>> . >>> 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/723c5d04-576f-4814-ae19-bd9cdf32b749%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
