override with v2 version

This commit is contained in:
doteast 2016-02-25 22:12:15 +00:00
parent b904e77026
commit 2ed3b026b9
2 changed files with 83 additions and 99 deletions

View file

@ -25,37 +25,51 @@ SOFTWARE."""
:contact: opensource@till.name
:license: MIT
"""
""" :changes: Ali AlKhalidi
:contact: doteast@fedoraproject.org
"""
import os
import sys
import copy
import itertools
from ansible import plugins
from ansible.errors import AnsibleOptionsError
from ansible.plugins.callback import CallbackBase
from ansible.plugins.callback import default
from ansible.cli.adhoc import AdHocCLI
ALIAS_PATH = '/srv/web/infra/hosts/{hostname}/host_aliases'
os.environ['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
import ansible.runner
if __name__ == "__main__":
runner = ansible.runner.Runner(module_name="setup")
results = runner.run()
class ResultAccumulator(CallbackBase):
def __init__(self, *args, **kwargs):
super(ResultAccumulator, self).__init__(*args, **kwargs)
self.unreachable = set()
self.host_status = {}
self.sshhostkeys = {}
sshhostkeys = {}
for (hostname, result) in results['contacted'].items():
facts = result["ansible_facts"]
key = "ssh-rsa {0}".format(facts["ansible_ssh_host_key_rsa_public"])
def v2_runner_on_unreachable(self, result):
self.unreachable.add(result._host.get_name())
names = [hostname]
ansible_fqdn = facts["ansible_fqdn"]
def v2_runner_on_ok(self, result, *args, **kwargs):
facts = result._result['ansible_facts']
key = "ssh-rsa {0}".format(facts['ansible_ssh_host_key_rsa_public'])
names = [result._host.get_name()]
ansible_fqdn = facts['ansible_fqdn']
if ansible_fqdn not in names:
names.append(ansible_fqdn)
ansible_hostname = facts["ansible_hostname"]
ansible_hostname = facts['ansible_hostname']
if ansible_hostname not in names:
if ansible_fqdn.find('.stg.') != -1 or hostname.find('.stg.') != -1:
if ansible_fqdn.find('.stg.') != -1 or result._host.get_name().find('.stg.') != -1:
names.append(ansible_hostname+".stg")
else:
names.append(ansible_hostname)
try:
with open(ALIAS_PATH.format(hostname=hostname),
with open(ALIAS_PATH.format(hostname=result._host.get_name()),
"rb") as alias_file:
aliases = [a.strip() for a in alias_file.readlines()]
for alias in aliases:
@ -78,9 +92,23 @@ if __name__ == "__main__":
tunnel_addresses=facts["ansible_tun0"]
names.append(tunnel_addresses['ipv4']['address'])
sshhostkeys[hostname] = {"key": key,
self.sshhostkeys[result._host.get_name()] = {"key": key,
"names": ",".join(names)}
for host in sorted(sshhostkeys.keys()):
print "{names} {key} {comment}".format(comment=host,
**sshhostkeys[host])
if __name__ == '__main__':
args = copy.copy(sys.argv)
args.extend(['-m', 'setup'])
cb = ResultAccumulator()
cli = AdHocCLI(copy.copy(args), callback=cb)
try:
cli.parse()
except AnsibleOptionsError:
if len(cli.args) != 1:
cli.args = copy.copy(args)
cli.args.append('all')
cli.parse()
cli.run()
for host in sorted(cb.sshhostkeys.items()):
print "{names} {key} {comment}".format(comment=host[0],**host[1])