From 612d9c3e92acbcc89a13bb6c39322c6e20b3ccf0 Mon Sep 17 00:00:00 2001 From: Vic Iglesias Date: Mon, 21 Dec 2015 12:09:29 -0600 Subject: [PATCH] Use credentials_file for GCE module auth config --- lib/ansible/modules/cloud/google/gce.py | 63 +++++++++++---------- lib/ansible/modules/cloud/google/gce_lb.py | 11 +++- lib/ansible/modules/cloud/google/gce_net.py | 14 ++++- lib/ansible/modules/cloud/google/gce_pd.py | 14 ++++- 4 files changed, 65 insertions(+), 37 deletions(-) diff --git a/lib/ansible/modules/cloud/google/gce.py b/lib/ansible/modules/cloud/google/gce.py index f0b7440cec1..88d593bf878 100644 --- a/lib/ansible/modules/cloud/google/gce.py +++ b/lib/ansible/modules/cloud/google/gce.py @@ -76,10 +76,15 @@ options: pem_file: version_added: 1.5.1 description: - - path to the pem file associated with the service account email + - (deprecated) path to the pem file associated with the service account email required: false default: null - aliases: [] + credentials_file: + version_added: 2.1.0 + description: + - path to the JSON file associated with the service account email + default: null + required: false project_id: version_added: 1.5.1 description: @@ -158,7 +163,7 @@ options: requirements: - "python >= 2.6" - - "apache-libcloud >= 0.13.3" + - "apache-libcloud >= 0.17.0" notes: - Either I(name) or I(instance_names) is required. author: "Eric Johnson (@erjohnso) " @@ -191,14 +196,13 @@ EXAMPLES = ''' image: debian-6 zone: us-central1-a service_account_email: unique-email@developer.gserviceaccount.com - pem_file: /path/to/pem_file + credentials_file: /path/to/json_file project_id: project-id tasks: - name: Launch instances local_action: gce instance_names={{names}} machine_type={{machine_type}} - image={{image}} zone={{zone}} - service_account_email={{ service_account_email }} - pem_file={{ pem_file }} project_id={{ project_id }} + image={{image}} zone={{zone}} service_account_email={{ service_account_email }} + credentials_file={{ credentials_file }} project_id={{ project_id }} register: gce - name: Wait for SSH to come up local_action: wait_for host={{item.public_ip}} port=22 delay=10 @@ -470,34 +474,35 @@ def terminate_instances(module, gce, instance_names, zone_name): def main(): module = AnsibleModule( - argument_spec=dict( - image=dict(default='debian-7'), - instance_names=dict(), - machine_type=dict(default='n1-standard-1'), - metadata=dict(), - name=dict(), - network=dict(default='default'), - persistent_boot_disk=dict(type='bool', default=False), - disks=dict(type='list'), - state=dict(choices=['active', 'present', 'absent', 'deleted'], - default='present'), - tags=dict(type='list'), - zone=dict(default='us-central1-a'), - service_account_email=dict(), - service_account_permissions=dict(type='list'), - pem_file=dict(), - project_id=dict(), - ip_forward=dict(type='bool', default=False), - external_ip=dict(choices=['ephemeral', 'none'], - default='ephemeral'), - disk_auto_delete=dict(type='bool', default=True), + argument_spec = dict( + image = dict(default='debian-7'), + instance_names = dict(), + machine_type = dict(default='n1-standard-1'), + metadata = dict(), + name = dict(), + network = dict(default='default'), + persistent_boot_disk = dict(type='bool', default=False), + disks = dict(type='list'), + state = dict(choices=['active', 'present', 'absent', 'deleted'], + default='present'), + tags = dict(type='list'), + zone = dict(default='us-central1-a'), + service_account_email = dict(), + service_account_permissions = dict(type='list'), + pem_file = dict(), + credentials_file = dict(), + project_id = dict(), + ip_forward = dict(type='bool', default=False), + external_ip = dict(choices=['ephemeral', 'none'], + default='ephemeral'), + disk_auto_delete = dict(type='bool', default=True), ) ) if not HAS_PYTHON26: module.fail_json(msg="GCE module requires python's 'ast' module, python v2.6+") if not HAS_LIBCLOUD: - module.fail_json(msg='libcloud with GCE support (0.13.3+) required for this module') + module.fail_json(msg='libcloud with GCE support (0.17.0+) required for this module') gce = gce_connect(module) diff --git a/lib/ansible/modules/cloud/google/gce_lb.py b/lib/ansible/modules/cloud/google/gce_lb.py index 6a264839e50..c513a325294 100644 --- a/lib/ansible/modules/cloud/google/gce_lb.py +++ b/lib/ansible/modules/cloud/google/gce_lb.py @@ -119,10 +119,16 @@ options: pem_file: version_added: "1.6" description: - - path to the pem file associated with the service account email + - (deprecated) path to the pem file associated with the service account email required: false default: null aliases: [] + credentials_file: + version_added: 2.1.0 + description: + - path to the JSON file associated with the service account email + default: null + required: false project_id: version_added: "1.6" description: @@ -133,7 +139,7 @@ options: requirements: - "python >= 2.6" - - "apache-libcloud >= 0.13.3" + - "apache-libcloud >= 0.17.0" author: "Eric Johnson (@erjohnso) " ''' @@ -182,6 +188,7 @@ def main(): state = dict(default='present'), service_account_email = dict(), pem_file = dict(), + credentials_file = dict(), project_id = dict(), ) ) diff --git a/lib/ansible/modules/cloud/google/gce_net.py b/lib/ansible/modules/cloud/google/gce_net.py index b1258739476..3c00f88a0d5 100644 --- a/lib/ansible/modules/cloud/google/gce_net.py +++ b/lib/ansible/modules/cloud/google/gce_net.py @@ -91,7 +91,14 @@ options: pem_file: version_added: "1.6" description: - - path to the pem file associated with the service account email + - (deprecated) path to the pem file associated with the service account email + required: false + default: null + aliases: [] + credentials_file: + version_added: "2.1.0" + description: + - path to the JSON file associated with the service account email required: false default: null aliases: [] @@ -105,7 +112,7 @@ options: requirements: - "python >= 2.6" - - "apache-libcloud >= 0.13.3" + - "apache-libcloud >= 0.17.0" author: "Eric Johnson (@erjohnso) " ''' @@ -178,12 +185,13 @@ def main(): state = dict(default='present'), service_account_email = dict(), pem_file = dict(), + credentials_file = dict(), project_id = dict(), ) ) if not HAS_LIBCLOUD: - module.exit_json(msg='libcloud with GCE support (0.13.3+) required for this module') + module.exit_json(msg='libcloud with GCE support (0.17.0+) required for this module') gce = gce_connect(module) diff --git a/lib/ansible/modules/cloud/google/gce_pd.py b/lib/ansible/modules/cloud/google/gce_pd.py index 2d70c9b335a..f3df2a84bae 100644 --- a/lib/ansible/modules/cloud/google/gce_pd.py +++ b/lib/ansible/modules/cloud/google/gce_pd.py @@ -97,7 +97,14 @@ options: pem_file: version_added: "1.6" description: - - path to the pem file associated with the service account email + - (deprecated) path to the pem file associated with the service account email + required: false + default: null + aliases: [] + credentials_file: + version_added: "2.1.0" + description: + - path to the JSON file associated with the service account email required: false default: null aliases: [] @@ -119,7 +126,7 @@ options: requirements: - "python >= 2.6" - - "apache-libcloud >= 0.13.3" + - "apache-libcloud >= 0.17.0" author: "Eric Johnson (@erjohnso) " ''' @@ -158,11 +165,12 @@ def main(): zone = dict(default='us-central1-b'), service_account_email = dict(), pem_file = dict(), + credentials_file = dict(), project_id = dict(), ) ) if not HAS_LIBCLOUD: - module.fail_json(msg='libcloud with GCE support (0.13.3+) is required for this module') + module.fail_json(msg='libcloud with GCE support (0.17.0+) is required for this module') gce = gce_connect(module)