]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
rgw: multisite refact guits-multisite
authorGuillaume Abrioux <gabrioux@redhat.com>
Thu, 14 Jan 2021 16:52:39 +0000 (17:52 +0100)
committerGuillaume Abrioux <gabrioux@redhat.com>
Fri, 15 Jan 2021 16:03:43 +0000 (17:03 +0100)
wip

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
20 files changed:
roles/ceph-rgw/tasks/multisite/create_realm_zonegroup_zone_lists.yml
roles/ceph-rgw/tasks/multisite/create_zone_user.yml
roles/ceph-rgw/tasks/multisite/main.yml
roles/ceph-rgw/tasks/multisite/master.yml
roles/ceph-rgw/tasks/multisite/secondary.yml
roles/ceph-rgw/tasks/start_radosgw.yml
roles/ceph-validate/tasks/check_rgw_multisite.yml
tests/functional/rgw-multisite/group_vars/all
tests/functional/rgw-multisite/group_vars/rgws
tests/functional/rgw-multisite/host_vars/osd0
tests/functional/rgw-multisite/host_vars/rgw0 [new file with mode: 0644]
tests/functional/rgw-multisite/hosts
tests/functional/rgw-multisite/secondary/group_vars/all
tests/functional/rgw-multisite/secondary/group_vars/rgws
tests/functional/rgw-multisite/secondary/host_vars/osd0
tests/functional/rgw-multisite/secondary/host_vars/rgw0 [new file with mode: 0644]
tests/functional/rgw-multisite/secondary/hosts
tests/functional/rgw-multisite/secondary/vagrant_variables.yml
tests/functional/rgw-multisite/vagrant_variables.yml
tests/functional/rgw_multisite.yml

index b645bc2beb51309c9727a08abb0cda8a8c1cb240..3c6e6f6307b3157bb0d693aed2695d6ae60690d7 100644 (file)
@@ -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
index a335bc45e67e25e145233165bf411f36c17e2a56..5567c56f0fd2df1bafffaeadd249a12b7f62cd37 100644 (file)
@@ -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 }}"
index 37a4496e6f8b498ca20ba9f31035510c674030f8..e4d1c8bd87c61cf58b6a62d6db0d07a3306df7da 100644 (file)
@@ -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
+
index 8b34565fba425fc009e971f6b1bf94aa89961301..8f29f6f0d434ccd92369e5609107a5ec1e3b7437 100644 (file)
@@ -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 }}"
index 4d9230c479f2564e1ff220253fb5aca1d1216476..8807931cb9bd16d6eaee5002b735fa894882f478 100644 (file)
@@ -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
index 39102e82f5325e93d63d7fe03d14f64ee2adece6..7fdfec497ac4cc3051026f5ba261215a059af89d 100644 (file)
     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:
index 84ffcd45ed61ac2af6620259eb9ff4dbdccc79a6..6693f00b3206b9255a454b18fe76678ef57c78c1 100644 (file)
@@ -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
+
index dd92070b0e67324b0b912d4dc6315737af87b55a..d22ccd76dd8aad21dc6589f6bedd271b35ff9485 100644 (file)
@@ -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"
index 949999d52f355e3289b877099d66981415837ebe..2e6f033e0c9fa099a1f6b2e94f0766188e512706 100644 (file)
@@ -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
index 131d6448365f6e428901f1ca34d57e8022ec56e9..258270657d22d7b17df94fedd3f7c9cb24ffa0a2 100644 (file)
@@ -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 (file)
index 0000000..8a70958
--- /dev/null
@@ -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
index 6a04f961014a3ae095c66c212774cd69897b6f2c..422b98d64608e94b9a9d4302885639b46fbcc7f0 100644 (file)
@@ -3,6 +3,8 @@ mon0
 
 [osds]
 osd0
+osd1
 
 [rgws]
 osd0
+rgw0
\ No newline at end of file
index 1329c28ba74f9ed2b69c37ad9d1334ae0316ce42..020fb86092168730be7e73bde994275ac8497cc5 100644 (file)
@@ -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"
index a902ad633606daad014519c155e4000607a23eab..be75232753d58833e03dc36b9fabfd291e88d7df 100644 (file)
@@ -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
index 5b7d5306b4b2faaf339f456d4652d214906a765f..33591e22e2754b917d3932b1505a5b97a7ba05c4 100644 (file)
@@ -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 (file)
index 0000000..28ae4b3
--- /dev/null
@@ -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
index 6a04f961014a3ae095c66c212774cd69897b6f2c..422b98d64608e94b9a9d4302885639b46fbcc7f0 100644 (file)
@@ -3,6 +3,8 @@ mon0
 
 [osds]
 osd0
+osd1
 
 [rgws]
 osd0
+rgw0
\ No newline at end of file
index 54573d9bcbb0567e58f12319214c3d49c2ea5b30..18b5bbe75a4e8166cdaa6bd65f38aa68dbb5cde7 100644 (file)
@@ -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
index 3c7a8d3e66561a384e971e13264fe0582edbb63c..a09d9eda9b5840a217524f182e59ca48e5431033 100644 (file)
@@ -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
index ac27dcead8d6d5dab8436b7a43ba8233ed1353ac..f8a12f01328435854097c8bb071a70179b23b1d9 100644 (file)
@@ -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