From 86076807306c5502fa526e1b150b85be67a6f721 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Fri, 16 Mar 2018 18:36:32 +0545 Subject: [PATCH] issue #150: quick script to run ansible against gcloud instance group --- examples/playbook/gcloud-ansible-playbook.py | 35 ++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100755 examples/playbook/gcloud-ansible-playbook.py diff --git a/examples/playbook/gcloud-ansible-playbook.py b/examples/playbook/gcloud-ansible-playbook.py new file mode 100755 index 00000000..3f3428bf --- /dev/null +++ b/examples/playbook/gcloud-ansible-playbook.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +import os +import sys + +import googleapiclient.discovery + + +def main(): + project = 'mitogen-load-testing' + zone = 'asia-south1-c' + group_name = 'micro-debian9' + + client = googleapiclient.discovery.build('compute', 'v1') + resp = client.instances().list(project=project, zone=zone).execute() + + ips = [] + for inst in resp['items']: + if inst['status'] == 'RUNNING' and inst['name'].startswith(group_name): + ips.extend( + bytes(config['natIP']) + for interface in inst['networkInterfaces'] + for config in interface['accessConfigs'] + ) + + print 'Addresses:', ips + os.execvp('ansible-playbook', [ + 'anisble-playbook', + '--user=dw', + '--inventory-file=' + ','.join(ips) + ',' + ] + sys.argv[1:]) + + +if __name__ == '__main__': + main()