diff --git a/roles/ceph-facts/tasks/set_radosgw_address.yml b/roles/ceph-facts/tasks/set_radosgw_address.yml index 99ebf8b4ed..1c3abd675c 100644 --- a/roles/ceph-facts/tasks/set_radosgw_address.yml +++ b/roles/ceph-facts/tasks/set_radosgw_address.yml @@ -64,16 +64,22 @@ run_once: true when: ip_version == 'ipv6' -- name: set_fact rgw_instances without rgw multisite - set_fact: - rgw_instances: "{{ rgw_instances|default([]) | union([{'instance_name': 'rgw' + item|string, 'radosgw_address': hostvars[ceph_dashboard_call_item | default(inventory_hostname)]['_radosgw_address'], 'radosgw_frontend_port': radosgw_frontend_port|int + item|int }]) }}" - with_sequence: start=0 end={{ radosgw_num_instances|int - 1 }} - delegate_to: "{{ ceph_dashboard_call_item if ceph_dashboard_call_item is defined else inventory_hostname }}" - delegate_facts: "{{ true if ceph_dashboard_call_item is defined else false }}" +- name: rgw_instances without rgw multisite when: - ceph_dashboard_call_item is defined or inventory_hostname in groups.get(rgw_group_name, []) - not rgw_multisite | bool + block: + - name: reset rgw_instances (workaround) + set_fact: + rgw_instances: [] + + - name: set_fact rgw_instances without rgw multisite + set_fact: + rgw_instances: "{{ rgw_instances|default([]) | union([{'instance_name': 'rgw' + item|string, 'radosgw_address': hostvars[ceph_dashboard_call_item | default(inventory_hostname)]['_radosgw_address'], 'radosgw_frontend_port': radosgw_frontend_port|int + item|int }]) }}" + with_sequence: start=0 end={{ radosgw_num_instances|int - 1 }} + delegate_to: "{{ ceph_dashboard_call_item if ceph_dashboard_call_item is defined else inventory_hostname }}" + delegate_facts: "{{ true if ceph_dashboard_call_item is defined else false }}" - name: set_fact is_rgw_instances_defined set_fact: @@ -85,17 +91,23 @@ ceph_dashboard_call_item is defined - rgw_multisite | bool -- name: set_fact rgw_instances with rgw multisite - set_fact: - rgw_instances: "{{ rgw_instances|default([]) | union([{ 'instance_name': 'rgw' + item | string, 'radosgw_address': hostvars[ceph_dashboard_call_item | default(inventory_hostname)]['_radosgw_address'], 'radosgw_frontend_port': radosgw_frontend_port | int + item|int, 'rgw_realm': rgw_realm | string, 'rgw_zonegroup': rgw_zonegroup | string, 'rgw_zone': rgw_zone | string, 'system_access_key': system_access_key, 'system_secret_key': system_secret_key, 'rgw_zone_user': rgw_zone_user, 'rgw_zone_user_display_name': rgw_zone_user_display_name, 'endpoint': (rgw_pull_proto + '://' + rgw_pullhost + ':' + rgw_pull_port | string) if not rgw_zonemaster | bool and rgw_zonesecondary | bool else omit }]) }}" - with_sequence: start=0 end={{ radosgw_num_instances|int - 1 }} - delegate_to: "{{ ceph_dashboard_call_item if ceph_dashboard_call_item is defined else inventory_hostname }}" - delegate_facts: "{{ true if ceph_dashboard_call_item is defined else false }}" +- name: rgw_instances with rgw multisite when: - ceph_dashboard_call_item is defined or inventory_hostname in groups.get(rgw_group_name, []) - rgw_multisite | bool - not is_rgw_instances_defined | default(False) | bool + block: + - name: reset rgw_instances (workaround) + set_fact: + rgw_instances: [] + + - name: set_fact rgw_instances with rgw multisite + set_fact: + rgw_instances: "{{ rgw_instances|default([]) | union([{ 'instance_name': 'rgw' + item | string, 'radosgw_address': hostvars[ceph_dashboard_call_item | default(inventory_hostname)]['_radosgw_address'], 'radosgw_frontend_port': radosgw_frontend_port | int + item|int, 'rgw_realm': rgw_realm | string, 'rgw_zonegroup': rgw_zonegroup | string, 'rgw_zone': rgw_zone | string, 'system_access_key': system_access_key, 'system_secret_key': system_secret_key, 'rgw_zone_user': rgw_zone_user, 'rgw_zone_user_display_name': rgw_zone_user_display_name, 'endpoint': (rgw_pull_proto + '://' + rgw_pullhost + ':' + rgw_pull_port | string) if not rgw_zonemaster | bool and rgw_zonesecondary | bool else omit }]) }}" + with_sequence: start=0 end={{ radosgw_num_instances|int - 1 }} + delegate_to: "{{ ceph_dashboard_call_item if ceph_dashboard_call_item is defined else inventory_hostname }}" + delegate_facts: "{{ true if ceph_dashboard_call_item is defined else false }}" - name: set_fact rgw_instances_host set_fact: