Merge branch 'setup_filter_argument' of git://github.com/leucos/ansible into devel

pull/2170/merge
Michael DeHaan 12 years ago
commit 275bd1f400

@ -20,6 +20,7 @@
import array import array
import fcntl import fcntl
import fnmatch
import glob import glob
import platform import platform
import re import re
@ -30,7 +31,13 @@ DOCUMENTATION = '''
--- ---
module: setup module: setup
short_description: Gathers facts about remote hosts short_description: Gathers facts about remote hosts
options: {} options:
filter:
description:
- a filter that will be applied to the keys; only key matching filter will
be returned. The filter should be a shell-style wildcard.
required: false
default: *
description: description:
- This module is automatically called by playbooks to gather useful - This module is automatically called by playbooks to gather useful
variables about remote hosts that can be used in playbooks. It can also be variables about remote hosts that can be used in playbooks. It can also be
@ -45,9 +52,20 @@ notes:
bubbled up to the caller. Using the ansible facts and choosing to not bubbled up to the caller. Using the ansible facts and choosing to not
install I(facter) and I(ohai) means you can avoid Ruby-dependencies on your install I(facter) and I(ohai) means you can avoid Ruby-dependencies on your
remote systems. (See also M(facter) and M(ohai).) remote systems. (See also M(facter) and M(ohai).)
- The filter option filters only the first level subkey below ansible_facts.
examples: examples:
- code: ansible all -m setup --tree /tmp/facts - code: ansible all -m setup --tree /tmp/facts
description: Obtain facts from all hosts and store them indexed by I(hostname) at C(/tmp/facts). description: Obtain facts from all hosts and store them indexed by I(hostname) at C(/tmp/facts).
- code: ansible all -m setup -a 'filter=ansible_*_mb'
description: Obtain I(only) facts regarding memory found by ansible on all hosts and output them.
- code: ansible all -m setup -a 'filter=facter_*'
description: Display I(only) facts returned by facter.
- code: ansible all -m setup -a 'filter=ansible_eth[0-2]'
description: Displays ansible facts abouts ethernet interfaces eth0, eth1, and eth2.
- code: ansible all -m setup -a 'filter=ansible_eth?'
description: Displays ansible facts abouts ethernet interfaces eth0 through eth9 (but not eth10).
- code: ansible all -m setup -a 'filter=ansible_eth[!0]'
description: Displays ansible facts abouts all ethernet interfaces but eth0.
author: Michael DeHaan author: Michael DeHaan
''' '''
@ -1135,8 +1153,11 @@ def run_setup(module):
k2 = "ohai_%s" % k.replace('-', '_') k2 = "ohai_%s" % k.replace('-', '_')
setup_options[k2] = v setup_options[k2] = v
setup_result = {} setup_result = { 'ansible_facts': {} }
setup_result['ansible_facts'] = setup_options
for (k,v) in setup_options.items():
if module.params['filter'] == '*' or fnmatch.fnmatch(k, module.params['filter']):
setup_result['ansible_facts'][k] = v
# hack to keep --verbose from showing all the setup module results # hack to keep --verbose from showing all the setup module results
setup_result['verbose_override'] = True setup_result['verbose_override'] = True
@ -1146,7 +1167,9 @@ def run_setup(module):
def main(): def main():
global module global module
module = AnsibleModule( module = AnsibleModule(
argument_spec = dict(), argument_spec = dict(
filter=dict(default="*", required=False),
),
supports_check_mode = True, supports_check_mode = True,
) )
data = run_setup(module) data = run_setup(module)

Loading…
Cancel
Save