diff options
author | doteast <ali.elkhalidi@gmail.com> | 2016-02-25 22:12:15 +0000 |
---|---|---|
committer | doteast <ali.elkhalidi@gmail.com> | 2016-02-25 22:12:15 +0000 |
commit | 2ed3b026b9185b64bc6841c8b4692b8d5f111419 (patch) | |
tree | 40cc4a951f8f1e30b38aee6e9786b0624ff2c408 /scripts/fetch-ssh-keys | |
parent | b904e770262012673f9fbd6400d33ecdbd0f843a (diff) | |
download | ansible-2ed3b026b9185b64bc6841c8b4692b8d5f111419.tar.gz ansible-2ed3b026b9185b64bc6841c8b4692b8d5f111419.tar.xz ansible-2ed3b026b9185b64bc6841c8b4692b8d5f111419.zip |
override with v2 version
Diffstat (limited to 'scripts/fetch-ssh-keys')
-rwxr-xr-x | scripts/fetch-ssh-keys | 66 |
1 files changed, 47 insertions, 19 deletions
diff --git a/scripts/fetch-ssh-keys b/scripts/fetch-ssh-keys index ec1a2cc2e..4b8280af4 100755 --- a/scripts/fetch-ssh-keys +++ b/scripts/fetch-ssh-keys @@ -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 = {} + + def v2_runner_on_unreachable(self, result): + self.unreachable.add(result._host.get_name()) - 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_ok(self, result, *args, **kwargs): + facts = result._result['ansible_facts'] + key = "ssh-rsa {0}".format(facts['ansible_ssh_host_key_rsa_public']) - names = [hostname] - ansible_fqdn = facts["ansible_fqdn"] + 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]) |