fix for facter being installed in a different location

reviewable/pr18780/r1
Kristof Keppens 12 years ago
parent 3926f76644
commit dc20d63919

@ -1638,11 +1638,25 @@ def run_setup(module):
for (k, v) in facts.items(): for (k, v) in facts.items():
setup_options["ansible_%s" % k.replace('-', '_')] = v setup_options["ansible_%s" % k.replace('-', '_')] = v
# Look for the path to the facter and ohai binary and set
# the variable to that path.
facter_path = None
ohai_path = None
for dir in os.environ['PATH'].split(':'):
facter = os.path.join(dir, 'facter')
if os.path.exists(facter):
facter_path = facter
ohai = os.path.join(dir, 'ohai')
if os.path.exists(ohai):
ohai_path = ohai
# if facter is installed, and we can use --json because # if facter is installed, and we can use --json because
# ruby-json is ALSO installed, include facter data in the JSON # ruby-json is ALSO installed, include facter data in the JSON
if os.path.exists("/usr/bin/facter"): if facter_path is not None:
rc, out, err = module.run_command("/usr/bin/facter --json") rc, out, err = module.run_command(facter_path + " --json")
facter = True facter = True
try: try:
facter_ds = json.loads(out) facter_ds = json.loads(out)
@ -1656,8 +1670,8 @@ def run_setup(module):
# because it contains a lot of nested stuff we can't use for # because it contains a lot of nested stuff we can't use for
# templating w/o making a nicer key for it (TODO) # templating w/o making a nicer key for it (TODO)
if os.path.exists("/usr/bin/ohai"): if ohai_path is not None:
rc, out, err = module.run_command("/usr/bin/ohai") rc, out, err = module.run_command(ohai_path)
ohai = True ohai = True
try: try:
ohai_ds = json.loads(out) ohai_ds = json.loads(out)

Loading…
Cancel
Save