From 645ec2fa293597ba53122936dfca1b3e3087b207 Mon Sep 17 00:00:00 2001 From: Jim Enright Date: Fri, 29 Oct 2021 17:25:10 +0100 Subject: [PATCH] Add GCP support to FreeIPA host group role Signed-off-by: Jim Enright --- roles/freeipa_host_group/defaults/main.yml | 2 ++ roles/freeipa_host_group/tasks/main.yml | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/roles/freeipa_host_group/defaults/main.yml b/roles/freeipa_host_group/defaults/main.yml index 1c2a4791..a0e5d8ca 100644 --- a/roles/freeipa_host_group/defaults/main.yml +++ b/roles/freeipa_host_group/defaults/main.yml @@ -23,5 +23,7 @@ freeipa_host_group__env_name: "{{ common__env_name }}" freeipa_host_group__infra_type: "{{ common__infra_type }}" freeipa_host_group__region: "{{ common__region }}" +freeipa_host_group__gcp_project: "{{ common__gcp_project }}" + # Outputs freeipa_host_group__host_group_name: "freeipa_server_hosts" \ No newline at end of file diff --git a/roles/freeipa_host_group/tasks/main.yml b/roles/freeipa_host_group/tasks/main.yml index a8ae2ccf..7b41e922 100644 --- a/roles/freeipa_host_group/tasks/main.yml +++ b/roles/freeipa_host_group/tasks/main.yml @@ -46,11 +46,22 @@ # when: freeipa_host_group__infra_type == "azure" # block: -# TODO: A block per cloud provider - GCP # Get instance details for specific infra_type - GCP -# - name: Gather FreeIPA instance details on GCP -# when: freeipa_host_group__infra_type == "gcp" -# block: +- name: Gather FreeIPA instance details on GCP + when: freeipa_host_group__infra_type == "gcp" + block: + - name: Gather Address information used by FreeIPA GCP instance + google.cloud.gcp_compute_address_info: + region: "{{ freeipa_host_group__region }}" + project: "{{ freeipa_host_group__gcp_project }}" + # Filter on the freeipa instance name with the timestamp stripped + filters: + - "name : {{ __freeipa_server_instance_id | regex_replace('[^-]+$', '') }}*" + register: __gcp_freeipa_address_info + + - name: Set facts for the FreeIPA server IP + ansible.builtin.set_fact: + __freeipa_server_public_ip: "{{ __gcp_freeipa_address_info.resources | map(attribute='address') }}" # Add the FreeIPA server and username to the inventory - name: Add FreeIPA servers to inventory