Setup ssh_fingerprints grain
diff --git a/_grains/ssh_fingerprints.py b/_grains/ssh_fingerprints.py
new file mode 100644
index 0000000..3fe5438
--- /dev/null
+++ b/_grains/ssh_fingerprints.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+
+import base64
+import hashlib
+
+
+def main():
+ host_keys = {
+ 'rsa': '/etc/ssh/ssh_host_rsa_key.pub',
+ 'dsa': '/etc/ssh/ssh_host_dsa_key.pub',
+ 'ecdsa': '/etc/ssh/ssh_host_ecdsa_key.pub',
+ }
+
+ ssh_fingerprints = {}
+ for key_type, filename in host_keys.iteritems():
+ try:
+ ssh_fingerprints[key_type] = _get_ssh_fingerprint(filename)
+ except IOError:
+ pass
+
+ if ssh_fingerprints:
+ return {
+ 'ssh_fingerprints': ssh_fingerprints
+ }
+ else:
+ return None
+
+
+def _get_ssh_fingerprint(filename):
+ with open(filename, 'r') as fh:
+ key = base64.b64decode(fh.read().strip().split()[1].encode('ascii'))
+ fp_plain = hashlib.md5(key).hexdigest()
+ return ':'.join(a+b for a, b in zip(fp_plain[::2], fp_plain[1::2]))