From f9969c29b35a96f5431b45ce68e758b045e726e0 Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Thu, 14 Jan 2021 17:52:39 +0100 Subject: [PATCH] rgw: multisite refact wip Signed-off-by: Guillaume Abrioux --- .../create_realm_zonegroup_zone_lists.yml | 28 ++-- .../tasks/multisite/create_zone_user.yml | 8 +- roles/ceph-rgw/tasks/multisite/main.yml | 42 +++--- roles/ceph-rgw/tasks/multisite/master.yml | 3 + roles/ceph-rgw/tasks/multisite/secondary.yml | 126 +++++++++--------- roles/ceph-rgw/tasks/start_radosgw.yml | 4 + .../tasks/check_rgw_multisite.yml | 15 ++- tests/functional/rgw-multisite/group_vars/all | 2 +- .../functional/rgw-multisite/group_vars/rgws | 4 - tests/functional/rgw-multisite/host_vars/osd0 | 25 ++-- tests/functional/rgw-multisite/host_vars/rgw0 | 28 ++++ tests/functional/rgw-multisite/hosts | 2 + .../rgw-multisite/secondary/group_vars/all | 2 +- .../rgw-multisite/secondary/group_vars/rgws | 8 +- .../rgw-multisite/secondary/host_vars/osd0 | 27 ++-- .../rgw-multisite/secondary/host_vars/rgw0 | 30 +++++ .../functional/rgw-multisite/secondary/hosts | 2 + .../secondary/vagrant_variables.yml | 4 +- .../rgw-multisite/vagrant_variables.yml | 4 +- tests/functional/rgw_multisite.yml | 4 +- 20 files changed, 216 insertions(+), 152 deletions(-) create mode 100644 tests/functional/rgw-multisite/host_vars/rgw0 create mode 100644 tests/functional/rgw-multisite/secondary/host_vars/rgw0 diff --git a/roles/ceph-rgw/tasks/multisite/create_realm_zonegroup_zone_lists.yml b/roles/ceph-rgw/tasks/multisite/create_realm_zonegroup_zone_lists.yml index b645bc2be..3c6e6f630 100644 --- a/roles/ceph-rgw/tasks/multisite/create_realm_zonegroup_zone_lists.yml +++ b/roles/ceph-rgw/tasks/multisite/create_realm_zonegroup_zone_lists.yml @@ -2,38 +2,32 @@ - name: set_fact realms set_fact: realms: '{{ realms | default([]) | union([item.rgw_realm]) }}' - loop: "{{ rgw_instances_all }}" - run_once: true + loop: "{{ rgw_instances }}" - name: create list secondary_realms set_fact: - secondary_realms: "{{ secondary_realms | default([]) | union([{ 'realm': item.rgw_realm, 'endpoint': item.endpoint, 'system_access_key': item.system_access_key, 'system_secret_key': item.system_secret_key, 'is_master': hostvars[item.host]['rgw_zonemaster'] }]) }}" - loop: "{{ rgw_instances_all }}" - run_once: true - when: not hostvars[item.host]['rgw_zonemaster'] | bool + secondary_realms: "{{ secondary_realms | default([]) | union([{ 'realm': item.rgw_realm, 'endpoint': item.endpoint, 'system_access_key': item.system_access_key, 'system_secret_key': item.system_secret_key, 'is_master': item.rgw_zonemaster | default(hostvars[inventory_hostname]['rgw_zonemaster']) }]) }}" + loop: "{{ rgw_instances }}" + when: not item.rgw_zonemaster | default(hostvars[inventory_hostname]['rgw_zonemaster']) | bool - name: create list zonegroups set_fact: - zonegroups: "{{ zonegroups | default([]) | union([{ 'realm': item.rgw_realm, 'zonegroup': item.rgw_zonegroup, 'is_master': hostvars[item.host]['rgw_zonegroupmaster'] }]) }}" - loop: "{{ rgw_instances_all }}" - run_once: true + zonegroups: "{{ zonegroups | default([]) | union([{ 'realm': item.rgw_realm, 'zonegroup': item.rgw_zonegroup, 'is_master': item.rgw_zonegroupmaster | default(hostvars[inventory_hostname]['rgw_zonegroupmaster']) }]) }}" + loop: "{{ rgw_instances }}" when: - - hostvars[item.host]['rgw_zonemaster'] | bool + - item.rgw_zonemaster | default(hostvars[inventory_hostname]['rgw_zonemaster']) | bool - name: create list zones set_fact: - zones: "{{ zones | default([]) | union([{ 'realm': item.rgw_realm, 'zonegroup': item.rgw_zonegroup, 'zone': item.rgw_zone, 'is_master': hostvars[item.host]['rgw_zonemaster'], 'system_access_key': item.system_access_key, 'system_secret_key': item.system_secret_key }]) }}" - loop: "{{ rgw_instances_all }}" - run_once: true + zones: "{{ zones | default([]) | union([{ 'realm': item.rgw_realm, 'zonegroup': item.rgw_zonegroup, 'zone': item.rgw_zone, 'is_master': item.rgw_zonemaster | default(hostvars[inventory_hostname]['rgw_zonemaster']), 'system_access_key': item.system_access_key, 'system_secret_key': item.system_secret_key }]) }}" + loop: "{{ rgw_instances }}" - name: create a list of dicts with each rgw endpoint and it's zone set_fact: - zone_endpoint_pairs: "{{ zone_endpoint_pairs | default([]) | union([{ 'endpoint': hostvars[item.host]['rgw_multisite_proto'] + '://' + item.radosgw_address + ':' + item.radosgw_frontend_port | string, 'rgw_zone': item.rgw_zone, 'rgw_realm': item.rgw_realm, 'rgw_zonegroup': item.rgw_zonegroup, 'rgw_zonemaster': hostvars[item.host]['rgw_zonemaster']}]) }}" - loop: "{{ rgw_instances_all }}" - run_once: true + zone_endpoint_pairs: "{{ zone_endpoint_pairs | default([]) | union([{ 'endpoint': item.rgw_multisite_proto | default(hostvars[inventory_hostname]['rgw_multisite_proto']) + '://' + item.radosgw_address + ':' + item.radosgw_frontend_port | string, 'rgw_zone': item.rgw_zone, 'rgw_realm': item.rgw_realm, 'rgw_zonegroup': item.rgw_zonegroup, 'rgw_zonemaster': item.rgw_zonemaster | default(hostvars[inventory_hostname]['rgw_zonemaster'])}]) }}" + loop: "{{ rgw_instances }}" - name: create a list of zones and all their endpoints set_fact: zone_endpoints_list: "{{ zone_endpoints_list | default([]) | union([{'zone': item.rgw_zone, 'zonegroup': item.rgw_zonegroup, 'realm': item.rgw_realm, 'is_master': item.rgw_zonemaster, 'endpoints': ','.join(zone_endpoint_pairs | selectattr('rgw_zone','match','^'+item.rgw_zone+'$') | selectattr('rgw_realm','match','^'+item.rgw_realm+'$') | selectattr('rgw_zonegroup', 'match','^'+item.rgw_zonegroup+'$') | map(attribute='endpoint'))}]) }}" loop: "{{ zone_endpoint_pairs }}" - run_once: true diff --git a/roles/ceph-rgw/tasks/multisite/create_zone_user.yml b/roles/ceph-rgw/tasks/multisite/create_zone_user.yml index a335bc45e..5567c56f0 100644 --- a/roles/ceph-rgw/tasks/multisite/create_zone_user.yml +++ b/roles/ceph-rgw/tasks/multisite/create_zone_user.yml @@ -2,11 +2,10 @@ - name: create list zone_users set_fact: zone_users: "{{ zone_users | default([]) | union([{ 'realm': item.rgw_realm, 'zonegroup': item.rgw_zonegroup, 'zone': item.rgw_zone, 'system_access_key': item.system_access_key, 'system_secret_key': item.system_secret_key, 'user': item.rgw_zone_user, 'display_name': item.rgw_zone_user_display_name }]) }}" - loop: "{{ rgw_instances_all }}" - run_once: true + loop: "{{ rgw_instances }}" when: - - hostvars[item.host]['rgw_zonemaster'] | bool - - hostvars[item.host]['rgw_zonegroupmaster'] | bool + - item.rgw_zonemaster | default(hostvars[inventory_hostname]['rgw_zonemaster']) | bool + - item.rgw_zonegroupmaster | default(hostvars[inventory_hostname]['rgw_zonegroupmaster']) | bool - name: create the zone user(s) radosgw_user: @@ -20,7 +19,6 @@ zone: "{{ item.zone }}" system: true delegate_to: "{{ groups[mon_group_name][0] }}" - run_once: true loop: "{{ zone_users }}" environment: CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}" diff --git a/roles/ceph-rgw/tasks/multisite/main.yml b/roles/ceph-rgw/tasks/multisite/main.yml index 37a4496e6..e4d1c8bd8 100644 --- a/roles/ceph-rgw/tasks/multisite/main.yml +++ b/roles/ceph-rgw/tasks/multisite/main.yml @@ -1,44 +1,32 @@ --- -- name: include_tasks create_realm_zonegroup_zone_lists.yml - include_tasks: create_realm_zonegroup_zone_lists.yml - # Include the tasks depending on the zone type - name: include_tasks master.yml include_tasks: master.yml + loop: "{{ rgw_instances }}" + loop_control: + loop_var: outer_item when: - - rgw_zonemaster | bool - - not rgw_zonesecondary | bool - -- name: include_tasks start_radosgw.yml for zonemaster rgws - include_tasks: ../start_radosgw.yml - when: - - rgw_zonemaster | bool - - not rgw_zonesecondary | bool - - not containerized_deployment | bool - -- name: include_tasks start_docker_rgw.yml for zonemaster rgws - include_tasks: ../start_docker_rgw.yml - when: - - rgw_zonemaster | bool - - not rgw_zonesecondary | bool - - containerized_deployment | bool + - outer_item.rgw_zonemaster | default(rgw_zonemaster) | bool + - not outer_item.rgw_zonesecondary | default(rgw_zonesecondary) | bool - name: include_tasks secondary.yml include_tasks: secondary.yml + loop: "{{ rgw_instances }}" + loop_control: + loop_var: outer_item when: - - not rgw_zonemaster | bool - - rgw_zonesecondary | bool + - not outer_item.rgw_zonemaster | default(rgw_zonemaster) | bool + - outer_item.rgw_zonesecondary | default(rgw_zonesecondary) | bool -- name: include_tasks start_radosgw.yml for zonesecondary rgws +- name: include_tasks start_radosgw.yml include_tasks: ../start_radosgw.yml + with_items: "{{ rgw_instances }}" when: - - not rgw_zonemaster | bool - - rgw_zonesecondary | bool - not containerized_deployment | bool -- name: include_tasks start_docker_rgw.yml for zonesecondary rgws +- name: include_tasks start_docker_rgw.yml include_tasks: ../start_docker_rgw.yml + with_items: "{{ rgw_instances }}" when: - - not rgw_zonemaster | bool - - rgw_zonesecondary | bool - containerized_deployment | bool + diff --git a/roles/ceph-rgw/tasks/multisite/master.yml b/roles/ceph-rgw/tasks/multisite/master.yml index 8b34565fb..8f29f6f0d 100644 --- a/roles/ceph-rgw/tasks/multisite/master.yml +++ b/roles/ceph-rgw/tasks/multisite/master.yml @@ -1,4 +1,7 @@ --- +- name: include_tasks create_realm_zonegroup_zone_lists.yml + include_tasks: create_realm_zonegroup_zone_lists.yml + - name: create the realm(s) radosgw_realm: name: "{{ item }}" diff --git a/roles/ceph-rgw/tasks/multisite/secondary.yml b/roles/ceph-rgw/tasks/multisite/secondary.yml index 4d9230c47..8807931cb 100644 --- a/roles/ceph-rgw/tasks/multisite/secondary.yml +++ b/roles/ceph-rgw/tasks/multisite/secondary.yml @@ -1,73 +1,73 @@ --- -- name: ensure connection to primary cluster from mon - uri: - url: "{{ item.endpoint }}" - delegate_to: "{{ groups[mon_group_name][0] }}" - run_once: true - loop: "{{ secondary_realms }}" - when: secondary_realms is defined +- name: include_tasks create_realm_zonegroup_zone_lists.yml + include_tasks: create_realm_zonegroup_zone_lists.yml - name: ensure connection to primary cluster from rgw uri: - url: "{{ item.endpoint }}" - loop: "{{ rgw_instances }}" - -- name: fetch the realm(s) - command: "{{ container_exec_cmd }} radosgw-admin realm pull --cluster={{ cluster }} --rgw-realm={{ item.realm }} --url={{ item.endpoint }} --access-key={{ item.system_access_key }} --secret={{ item.system_secret_key }}" - delegate_to: "{{ groups[mon_group_name][0] }}" + url: "{{ outer_item.endpoint }}" + timeout: 3600 run_once: true - loop: "{{ secondary_realms }}" + failed_when: false + register: test_endpoints_from_rgw when: secondary_realms is defined -- name: get the period(s) - command: "{{ container_exec_cmd }} radosgw-admin period get --cluster={{ cluster }} --rgw-realm={{ item.realm }}" - delegate_to: "{{ groups[mon_group_name][0] }}" - run_once: true - loop: "{{ secondary_realms }}" - when: secondary_realms is defined +- name: apply rgw multisite configuration on secondary instances + when: test_endpoints_from_rgw.status == 200 + block: + - name: fetch the realm(s) + command: "{{ container_exec_cmd }} radosgw-admin realm pull --cluster={{ cluster }} --rgw-realm={{ outer_item.rgw_realm }} --url={{ outer_item.endpoint }} --access-key={{ outer_item.system_access_key }} --secret={{ outer_item.system_secret_key }}" + delegate_to: "{{ groups[mon_group_name][0] }}" + when: + - test_endpoints_from_rgw.status == 200 + - secondary_realms is defined -- name: create the zone(s) - radosgw_zone: - name: "{{ item.zone }}" - cluster: "{{ cluster }}" - realm: "{{ item.realm }}" - zonegroup: "{{ item.zonegroup }}" - access_key: "{{ item.system_access_key }}" - secret_key: "{{ item.system_secret_key }}" - default: "{{ true if zones | length == 1 else false }}" - master: false - delegate_to: "{{ groups[mon_group_name][0] }}" - run_once: true - loop: "{{ zones }}" - when: - - zones is defined - - not item.is_master | bool - environment: - CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}" - CEPH_CONTAINER_BINARY: "{{ container_binary }}" + - name: get the period(s) + command: "{{ container_exec_cmd }} radosgw-admin period get --cluster={{ cluster }} --rgw-realm={{ outer_item.rgw_realm }}" + delegate_to: "{{ groups[mon_group_name][0] }}" + when: secondary_realms is defined -- name: add endpoints to their zone(s) - radosgw_zone: - name: "{{ item.zone }}" - cluster: "{{ cluster }}" - realm: "{{ item.realm }}" - zonegroup: "{{ item.zonegroup }}" - endpoints: "{{ item.endpoints.split(',') }}" - delegate_to: "{{ groups[mon_group_name][0] }}" - run_once: true - loop: "{{ zone_endpoints_list }}" - when: - - zone_endpoints_list is defined - - not item.is_master | bool - environment: - CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}" - CEPH_CONTAINER_BINARY: "{{ container_binary }}" + - name: create the zone(s) + radosgw_zone: + name: "{{ item.zone }}" + cluster: "{{ cluster }}" + realm: "{{ item.realm }}" + zonegroup: "{{ item.zonegroup }}" + access_key: "{{ item.system_access_key }}" + secret_key: "{{ item.system_secret_key }}" + default: "{{ true if zones | length == 1 else false }}" + master: false + delegate_to: "{{ groups[mon_group_name][0] }}" + run_once: true + loop: "{{ zones }}" + when: + - zones is defined + - not item.is_master | bool + environment: + CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}" + CEPH_CONTAINER_BINARY: "{{ container_binary }}" -- name: update period for zone creation - command: "{{ container_exec_cmd }} radosgw-admin --cluster={{ cluster }} --rgw-realm={{ item.realm }} --rgw-zonegroup={{ item.zonegroup }} --rgw-zone={{ item.zone }} period update --commit" - delegate_to: "{{ groups[mon_group_name][0] }}" - run_once: true - loop: "{{ zone_endpoints_list }}" - when: - - zone_endpoints_list is defined - - not item.is_master | bool + - name: add endpoints to their zone(s) + radosgw_zone: + name: "{{ item.zone }}" + cluster: "{{ cluster }}" + realm: "{{ item.realm }}" + zonegroup: "{{ item.zonegroup }}" + endpoints: "{{ item.endpoints.split(',') }}" + delegate_to: "{{ groups[mon_group_name][0] }}" + run_once: true + loop: "{{ zone_endpoints_list }}" + when: + - zone_endpoints_list is defined + - not item.is_master | bool + environment: + CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}" + CEPH_CONTAINER_BINARY: "{{ container_binary }}" + + - name: update period for zone creation + command: "{{ container_exec_cmd }} radosgw-admin --cluster={{ cluster }} --rgw-realm={{ item.realm }} --rgw-zonegroup={{ item.zonegroup }} --rgw-zone={{ item.zone }} period update --commit" + delegate_to: "{{ groups[mon_group_name][0] }}" + run_once: true + loop: "{{ zone_endpoints_list }}" + when: + - zone_endpoints_list is defined + - not item.is_master | bool diff --git a/roles/ceph-rgw/tasks/start_radosgw.yml b/roles/ceph-rgw/tasks/start_radosgw.yml index 39102e82f..7fdfec497 100644 --- a/roles/ceph-rgw/tasks/start_radosgw.yml +++ b/roles/ceph-rgw/tasks/start_radosgw.yml @@ -20,6 +20,10 @@ enabled: yes masked: no with_items: "{{ rgw_instances }}" + when: + - not rgw_multisite | bool or + ((rgw_multisite | bool and item.rgw_zonesecondary | default(rgw_zonesecondary) | bool and test_endpoints_from_rgw.status == 200) or + (rgw_multisite | bool and item.rgw_zonemaster | default(rgw_zonemaster))) - name: enable the ceph-radosgw.target service systemd: diff --git a/roles/ceph-validate/tasks/check_rgw_multisite.yml b/roles/ceph-validate/tasks/check_rgw_multisite.yml index 84ffcd45e..6693f00b3 100644 --- a/roles/ceph-validate/tasks/check_rgw_multisite.yml +++ b/roles/ceph-validate/tasks/check_rgw_multisite.yml @@ -8,14 +8,16 @@ - name: fail if either rgw_zonemaster or rgw_zonesecondary is undefined fail: msg: "rgw_zonemaster and rgw_zonesecondary must be defined" - when: rgw_zonemaster is undefined or rgw_zonesecondary is undefined + loop: "{{ rgw_instances }}" + when: item.rgw_zonemaster | default(rgw_zonemaster) is undefined or item.rgw_zonesecondary | default(rgw_zonesecondary) is undefined - name: fail if rgw_zonemaster and rgw_zonesecondary are both true fail: msg: "rgw_zonemaster and rgw_zonesecondary cannot both be true" + loop: "{{ rgw_instances }}" when: - - rgw_zonemaster | bool - - rgw_zonesecondary | bool + - item.rgw_zonemaster | default(rgw_zonemaster) | bool + - item.rgw_zonesecondary | default(rgw_zonesecondary) | bool - name: fail if rgw_zonegroup is not set fail: @@ -58,6 +60,7 @@ msg: "endpoint has not been set by the user" loop: "{{ rgw_instances }}" when: - - rgw_zonesecondary | bool - - rgw_pull_port is undefined and rgw_pullhost is undefined and rgw_pull_proto is undefined - - item.endpoint is undefined \ No newline at end of file + - item.rgw_zonesecondary | default(rgw_zonesecondary) | bool + - rgw_pull_port is undefined and rgw_pullhost is undefined and item.rgw_pull_proto | default(rgw_pull_proto) is undefined + - item.endpoint is undefined + diff --git a/tests/functional/rgw-multisite/group_vars/all b/tests/functional/rgw-multisite/group_vars/all index dd92070b0..d22ccd76d 100644 --- a/tests/functional/rgw-multisite/group_vars/all +++ b/tests/functional/rgw-multisite/group_vars/all @@ -1,6 +1,6 @@ --- ceph_origin: repository -ceph_repository: community +ceph_repository: dev cluster: ceph public_network: "192.168.101.0/24" cluster_network: "192.168.102.0/24" diff --git a/tests/functional/rgw-multisite/group_vars/rgws b/tests/functional/rgw-multisite/group_vars/rgws index 949999d52..2e6f033e0 100644 --- a/tests/functional/rgw-multisite/group_vars/rgws +++ b/tests/functional/rgw-multisite/group_vars/rgws @@ -10,7 +10,3 @@ rgw_create_pools: pg_num: 16 rgw_override_bucket_index_max_shards: 16 rgw_bucket_default_quota_max_objects: 1638400 -rgw_zonemaster: True -rgw_zonesecondary: False -rgw_zonegroupmaster: True -rgw_multisite_proto: http diff --git a/tests/functional/rgw-multisite/host_vars/osd0 b/tests/functional/rgw-multisite/host_vars/osd0 index 131d64483..258270657 100644 --- a/tests/functional/rgw-multisite/host_vars/osd0 +++ b/tests/functional/rgw-multisite/host_vars/osd0 @@ -1,8 +1,12 @@ rgw_instances: - instance_name: 'rgw0' - rgw_realm: 'france' - rgw_zonegroup: 'idf' - rgw_zone: 'paris' + rgw_zonemaster: True + rgw_zonesecondary: False + rgw_zonegroupmaster: True + rgw_multisite_proto: http + rgw_realm: 'realm0' + rgw_zonegroup: 'zonegroup0' + rgw_zone: 'las_vegas' radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 rgw_zone_user: jacques.chirac @@ -10,15 +14,20 @@ rgw_instances: system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB - instance_name: 'rgw1' - rgw_realm: 'usa' - rgw_zonegroup: 'alaska' - rgw_zone: 'juneau' + rgw_zonemaster: false + rgw_zonesecondary: true + rgw_zonegroupmaster: True + rgw_multisite_proto: http + rgw_realm: 'realm1' + rgw_zonegroup: 'zonegroup1' + rgw_zone: 'las_vegas' radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8081 rgw_zone_user: edward.lewis rgw_zone_user_display_name: "Edward Lewis" system_access_key: yu17wkvAx3B8Wyn08XoF system_secret_key: 5YZfaSUPqxSNIkZQQA3lBZ495hnIV6k2HAz710BY + endpoint: http://192.168.103.12:8081 # functional testing -rgw_multisite_endpoint_addr: 192.168.101.11 -radosgw_num_instances: 2 \ No newline at end of file +rgw_multisite_endpoint_addr: 192.168.101.12 +radosgw_num_instances: 2 diff --git a/tests/functional/rgw-multisite/host_vars/rgw0 b/tests/functional/rgw-multisite/host_vars/rgw0 new file mode 100644 index 000000000..8a7095864 --- /dev/null +++ b/tests/functional/rgw-multisite/host_vars/rgw0 @@ -0,0 +1,28 @@ +rgw_zonemaster: true +rgw_zonesecondary: false +rgw_zonegroupmaster: true +rgw_multisite_proto: http +rgw_instances: + - instance_name: 'rgw0' + rgw_realm: 'foo' + rgw_zonegroup: 'zonegroup2' + rgw_zone: 'gotham_city' + radosgw_address: "{{ _radosgw_address }}" + radosgw_frontend_port: 8080 + rgw_zone_user: batman + rgw_zone_user_display_name: "Batman" + system_access_key: 9WA1GN33IUYC717S8KB2 + system_secret_key: R2vWXyboYw9nluehMgtATBGDBZSuWLnR0M4xNa1W + - instance_name: 'rgw1' + rgw_realm: 'bar' + rgw_zonegroup: 'zonegroup3' + rgw_zone: 'metropolis' + radosgw_address: "{{ _radosgw_address }}" + radosgw_frontend_port: 8081 + rgw_zone_user: superman + rgw_zone_user_display_name: "Superman" + system_access_key: S96CJL44E29AN91Y3ZC5 + system_secret_key: ha7yWiIi7bSV2vAqMBfKjYIVKMfOBaGkWrUZifRt +# functional testing +rgw_multisite_endpoint_addr: 192.168.101.11 +radosgw_num_instances: 2 \ No newline at end of file diff --git a/tests/functional/rgw-multisite/hosts b/tests/functional/rgw-multisite/hosts index 6a04f9610..422b98d64 100644 --- a/tests/functional/rgw-multisite/hosts +++ b/tests/functional/rgw-multisite/hosts @@ -3,6 +3,8 @@ mon0 [osds] osd0 +osd1 [rgws] osd0 +rgw0 \ No newline at end of file diff --git a/tests/functional/rgw-multisite/secondary/group_vars/all b/tests/functional/rgw-multisite/secondary/group_vars/all index 1329c28ba..020fb8609 100644 --- a/tests/functional/rgw-multisite/secondary/group_vars/all +++ b/tests/functional/rgw-multisite/secondary/group_vars/all @@ -1,6 +1,6 @@ --- ceph_origin: repository -ceph_repository: community +ceph_repository: dev cluster: ceph public_network: "192.168.103.0/24" cluster_network: "192.168.104.0/24" diff --git a/tests/functional/rgw-multisite/secondary/group_vars/rgws b/tests/functional/rgw-multisite/secondary/group_vars/rgws index a902ad633..be7523275 100644 --- a/tests/functional/rgw-multisite/secondary/group_vars/rgws +++ b/tests/functional/rgw-multisite/secondary/group_vars/rgws @@ -9,7 +9,7 @@ rgw_create_pools: pg_num: 16 rgw_override_bucket_index_max_shards: 16 rgw_bucket_default_quota_max_objects: 1638400 -rgw_zonemaster: False -rgw_zonesecondary: True -rgw_zonegroupmaster: True -rgw_multisite_proto: http +#rgw_zonemaster: False +#rgw_zonesecondary: True +#rgw_zonegroupmaster: True +#rgw_multisite_proto: http diff --git a/tests/functional/rgw-multisite/secondary/host_vars/osd0 b/tests/functional/rgw-multisite/secondary/host_vars/osd0 index 5b7d5306b..33591e22e 100644 --- a/tests/functional/rgw-multisite/secondary/host_vars/osd0 +++ b/tests/functional/rgw-multisite/secondary/host_vars/osd0 @@ -1,26 +1,33 @@ rgw_instances: - instance_name: 'rgw0' - rgw_realm: 'france' - rgw_zonegroup: 'idf' - rgw_zone: 'versailles' + rgw_zonemaster: false + rgw_zonesecondary: true + rgw_zonegroupmaster: True + rgw_multisite_proto: http + rgw_realm: 'realm1' + rgw_zonegroup: 'zonegroup1' + rgw_zone: 'paris' radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB - endpoint: http://192.168.101.11:8080 + endpoint: http://192.168.101.12:8080 - instance_name: 'rgw1' - rgw_realm: 'usa' - rgw_zonegroup: 'alaska' - rgw_zone: 'anchorage' + rgw_zonemaster: True + rgw_zonesecondary: False + rgw_zonegroupmaster: True + rgw_multisite_proto: http + rgw_realm: 'realm0' + rgw_zonegroup: 'zonegroup0' + rgw_zone: 'paris' radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8081 rgw_zone_user: edward.lewis rgw_zone_user_display_name: "Edward Lewis" system_access_key: yu17wkvAx3B8Wyn08XoF system_secret_key: 5YZfaSUPqxSNIkZQQA3lBZ495hnIV6k2HAz710BY - endpoint: http://192.168.101.11:8081 # functional testing -rgw_multisite_endpoint_addr: 192.168.103.11 -radosgw_num_instances: 2 \ No newline at end of file +rgw_multisite_endpoint_addr: 192.168.103.12 +radosgw_num_instances: 2 diff --git a/tests/functional/rgw-multisite/secondary/host_vars/rgw0 b/tests/functional/rgw-multisite/secondary/host_vars/rgw0 new file mode 100644 index 000000000..28ae4b3f0 --- /dev/null +++ b/tests/functional/rgw-multisite/secondary/host_vars/rgw0 @@ -0,0 +1,30 @@ +rgw_zonemaster: false +rgw_zonesecondary: true +rgw_zonegroupmaster: true +rgw_multisite_proto: http +rgw_instances: + - instance_name: 'rgw0' + rgw_realm: 'foo' + rgw_zonegroup: 'zonegroup2' + rgw_zone: 'paris' + radosgw_address: "{{ _radosgw_address }}" + radosgw_frontend_port: 8080 + rgw_zone_user: batman + rgw_zone_user_display_name: "Batman" + system_access_key: 9WA1GN33IUYC717S8KB2 + system_secret_key: R2vWXyboYw9nluehMgtATBGDBZSuWLnR0M4xNa1W + endpoint: http://192.168.101.11:8080 + - instance_name: 'rgw1' + rgw_realm: 'bar' + rgw_zonegroup: 'zonegroup3' + rgw_zone: 'paris' + radosgw_address: "{{ _radosgw_address }}" + radosgw_frontend_port: 8081 + rgw_zone_user: superman + rgw_zone_user_display_name: "Superman" + system_access_key: S96CJL44E29AN91Y3ZC5 + system_secret_key: ha7yWiIi7bSV2vAqMBfKjYIVKMfOBaGkWrUZifRt + endpoint: http://192.168.101.11:8081 +# functional testing +rgw_multisite_endpoint_addr: 192.168.103.11 +radosgw_num_instances: 2 \ No newline at end of file diff --git a/tests/functional/rgw-multisite/secondary/hosts b/tests/functional/rgw-multisite/secondary/hosts index 6a04f9610..422b98d64 100644 --- a/tests/functional/rgw-multisite/secondary/hosts +++ b/tests/functional/rgw-multisite/secondary/hosts @@ -3,6 +3,8 @@ mon0 [osds] osd0 +osd1 [rgws] osd0 +rgw0 \ No newline at end of file diff --git a/tests/functional/rgw-multisite/secondary/vagrant_variables.yml b/tests/functional/rgw-multisite/secondary/vagrant_variables.yml index 54573d9bc..18b5bbe75 100644 --- a/tests/functional/rgw-multisite/secondary/vagrant_variables.yml +++ b/tests/functional/rgw-multisite/secondary/vagrant_variables.yml @@ -5,9 +5,9 @@ docker: false # DEFINE THE NUMBER OF VMS TO RUN mon_vms: 1 -osd_vms: 1 +osd_vms: 2 mds_vms: 0 -rgw_vms: 0 +rgw_vms: 1 nfs_vms: 0 grafana_server_vms: 0 rbd_mirror_vms: 0 diff --git a/tests/functional/rgw-multisite/vagrant_variables.yml b/tests/functional/rgw-multisite/vagrant_variables.yml index 3c7a8d3e6..a09d9eda9 100644 --- a/tests/functional/rgw-multisite/vagrant_variables.yml +++ b/tests/functional/rgw-multisite/vagrant_variables.yml @@ -5,9 +5,9 @@ docker: false # DEFINE THE NUMBER OF VMS TO RUN mon_vms: 1 -osd_vms: 1 +osd_vms: 2 mds_vms: 0 -rgw_vms: 0 +rgw_vms: 1 nfs_vms: 0 grafana_server_vms: 0 rbd_mirror_vms: 0 diff --git a/tests/functional/rgw_multisite.yml b/tests/functional/rgw_multisite.yml index ac27dcead..f8a12f013 100644 --- a/tests/functional/rgw_multisite.yml +++ b/tests/functional/rgw_multisite.yml @@ -40,7 +40,7 @@ s3cmd --no-ssl --access_key={{ item.system_access_key }} --secret_key={{ item.system_secret_key }} --host={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} --host-bucket={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} put /tmp/testinfra-{{ item.rgw_realm }}.img s3://testinfra-{{ item.rgw_realm }}; with_items: "{{ rgw_instances_host }}" when: - - rgw_zonemaster | bool + - item.rgw_zonemaster | default(rgw_zonemaster) | bool - not containerized_deployment | bool - name: get info from replicated file - containerized deployment @@ -64,5 +64,5 @@ delay: 1 until: result is succeeded when: - - not rgw_zonemaster | bool + - not item.rgw_zonemaster | default(rgw_zonemaster) | bool - not containerized_deployment | bool