summaryrefslogtreecommitdiffstats
path: root/scripts/fetch-ssh-keys
diff options
context:
space:
mode:
authordoteast <ali.elkhalidi@gmail.com>2016-02-25 22:12:15 +0000
committerdoteast <ali.elkhalidi@gmail.com>2016-02-25 22:12:15 +0000
commit2ed3b026b9185b64bc6841c8b4692b8d5f111419 (patch)
tree40cc4a951f8f1e30b38aee6e9786b0624ff2c408 /scripts/fetch-ssh-keys
parentb904e770262012673f9fbd6400d33ecdbd0f843a (diff)
downloadansible-2ed3b026b9185b64bc6841c8b4692b8d5f111419.tar.gz
ansible-2ed3b026b9185b64bc6841c8b4692b8d5f111419.tar.xz
ansible-2ed3b026b9185b64bc6841c8b4692b8d5f111419.zip
override with v2 version
Diffstat (limited to 'scripts/fetch-ssh-keys')
-rwxr-xr-xscripts/fetch-ssh-keys66
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])