porting to ansible 2.0
This commit is contained in:
parent
63ecec1d84
commit
85378c82e5
1 changed files with 27 additions and 12 deletions
|
@ -1,9 +1,13 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# doteast; base from skvidal's freezelist
|
# doteast; base from skvidal's freezelist
|
||||||
|
# doteast porting to ansible 2.0
|
||||||
# list hosts with ansible var[=value], Or
|
# list hosts with ansible var[=value], Or
|
||||||
# list all hosts with ansible vars
|
# list all hosts with their corresponding vars
|
||||||
|
# Note that the script will attempt to "match" the supplied value of the var against the values if it the var is multivalued
|
||||||
|
|
||||||
import ansible.inventory
|
from ansible.parsing.dataloader import DataLoader
|
||||||
|
from ansible.vars import VariableManager
|
||||||
|
from ansible.inventory import Inventory
|
||||||
import sys
|
import sys
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
|
|
||||||
|
@ -17,16 +21,24 @@ parser.add_option('-a', action="store_true", dest='all_vars', default=None,
|
||||||
help="get all vars")
|
help="get all vars")
|
||||||
opts, args = parser.parse_args(sys.argv[1:])
|
opts, args = parser.parse_args(sys.argv[1:])
|
||||||
|
|
||||||
if opts.inventory:
|
|
||||||
inv = ansible.inventory.Inventory(host_list=opts.inventory)
|
|
||||||
else:
|
|
||||||
inv = ansible.inventory.Inventory()
|
|
||||||
|
|
||||||
if ((opts.variable == None and opts.all_vars == None) or (opts.variable != None and opts.all_vars != None)):
|
if ((opts.variable == None and opts.all_vars == None) or (opts.variable != None and opts.all_vars != None)):
|
||||||
print "Usage: hosts_with_var_set -o varname[=value] | -a"
|
print "Usage: hosts_with_var_set -o varname[=value] | -a"
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
|
variable_manager = VariableManager()
|
||||||
|
loader = DataLoader()
|
||||||
|
|
||||||
|
if opts.inventory:
|
||||||
|
inv = Inventory(loader=loader,variable_manager=variable_manager, host_list=opts.inventory)
|
||||||
|
else:
|
||||||
|
inv = Inventory(loader=loader,variable_manager=variable_manager)
|
||||||
|
|
||||||
|
variable_manager.set_inventory(inv)
|
||||||
|
|
||||||
|
|
||||||
matching=True
|
matching=True
|
||||||
|
|
||||||
|
|
||||||
if opts.variable != None:
|
if opts.variable != None:
|
||||||
if opts.variable.find("=") == -1:
|
if opts.variable.find("=") == -1:
|
||||||
matching=False
|
matching=False
|
||||||
|
@ -39,16 +51,19 @@ if opts.variable != None:
|
||||||
var_set = []
|
var_set = []
|
||||||
|
|
||||||
for host in sorted(inv.get_hosts()):
|
for host in sorted(inv.get_hosts()):
|
||||||
vars = inv.get_variables(host.name)
|
vars = variable_manager.get_vars(loader=loader, host=host)
|
||||||
if opts.variable == None:
|
if opts.variable == None:
|
||||||
print "%s\n%s\n" % (host.name,vars)
|
# remove expanded 'all' groups
|
||||||
|
vars.pop('groups')
|
||||||
|
vars['groups']=host.get_groups()
|
||||||
|
print "%s\n%s\n" % (host.get_name(),vars)
|
||||||
else:
|
else:
|
||||||
if vars.has_key(var_name):
|
if vars.has_key(var_name):
|
||||||
if not matching:
|
if not matching:
|
||||||
var_set.append(host.name)
|
var_set.append(host.get_name())
|
||||||
else:
|
else:
|
||||||
if str(vars.get(var_name)).find(value) != -1:
|
if str(vars.get(var_name)).find(value) != -1:
|
||||||
var_set.append(host.name)
|
var_set.append(host.get_name())
|
||||||
|
|
||||||
if opts.variable != None:
|
if opts.variable != None:
|
||||||
if not matching:
|
if not matching:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue