rgw thread pool size = {{ radosgw_thread_pool_size }}
{% endif %}
{% if rgw_multisite | bool %}
+{% if ((instance['rgw_zonemaster'] | default(rgw_zonemaster) | bool) or (deploy_secondary_zones | default(True) | bool)) %}
rgw_realm = {{ instance['rgw_realm'] }}
rgw_zonegroup = {{ instance['rgw_zonegroup'] }}
rgw_zone = {{ instance['rgw_zone'] }}
{% endif %}
+{% endif %}
{% endfor %}
{% endif %}
{% endif %}
+++ /dev/null
----
-- name: set_fact realms
- set_fact:
- realms: '{{ realms | default([]) | union([item.rgw_realm]) }}'
- loop: "{{ rgw_instances_all }}"
- run_once: true
-
-- 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
-
-- 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
- when:
- - hostvars[item.host]['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
-
-- 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
-
-- 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
loop: "{{ rgw_instances_all }}"
run_once: true
when:
- - hostvars[item.host]['rgw_zonemaster'] | bool
- - hostvars[item.host]['rgw_zonegroupmaster'] | bool
+ - item.rgw_zonemaster | default(hostvars[item.host]['rgw_zonemaster']) | bool
+ - item.rgw_zonegroupmaster | default(hostvars[item.host]['rgw_zonegroupmaster']) | bool
- name: check if the realm system user already exists
command: "{{ container_exec_cmd }} radosgw-admin user info --cluster={{ cluster }} --rgw-realm={{ item.realm }} --rgw-zonegroup={{ item.zonegroup }} --rgw-zone={{ item.zone }} --uid={{ item.user }}"
---
-- name: include_tasks create_realm_zonegroup_zone_lists.yml
- include_tasks: create_realm_zonegroup_zone_lists.yml
+- name: set_fact realms
+ set_fact:
+ realms: '{{ realms | default([]) | union([item.rgw_realm]) }}'
+ run_once: true
+ loop: "{{ rgw_instances_all }}"
+ when: item.rgw_zonemaster | default(hostvars[item.host]['rgw_zonemaster']) | bool
+
+- name: create list zonegroups
+ set_fact:
+ zonegroups: "{{ zonegroups | default([]) | union([{ 'realm': item.rgw_realm, 'zonegroup': item.rgw_zonegroup, 'is_master': item.rgw_zonegroupmaster | default(hostvars[item.host]['rgw_zonegroupmaster']) }]) }}"
+ run_once: true
+ loop: "{{ rgw_instances_all }}"
+ when: item.rgw_zonegroupmaster | default(hostvars[item.host]['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': item.rgw_zonemaster | default(hostvars[item.host]['rgw_zonemaster']), 'system_access_key': item.system_access_key, 'system_secret_key': item.system_secret_key }]) }}"
+ run_once: true
+ loop: "{{ rgw_instances_all }}"
+
+- 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': item.rgw_zonemaster | default(hostvars[item.host]['rgw_zonemaster']) }]) }}"
+ loop: "{{ rgw_instances_all }}"
+ run_once: true
+
+- 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
- name: include multisite checks
include_tasks: checks.yml
# Include the tasks depending on the zone type
- name: include_tasks master.yml
include_tasks: master.yml
- 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
- name: include_tasks secondary.yml
include_tasks: secondary.yml
- when:
- - not rgw_zonemaster | bool
- - rgw_zonesecondary | bool
+ when: deploy_secondary_zones | default(True) | bool
-- name: include_tasks start_radosgw.yml for zonesecondary rgws
+- name: include_tasks start_radosgw.yml
include_tasks: ../start_radosgw.yml
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
when:
- - not rgw_zonemaster | bool
- - rgw_zonesecondary | bool
- containerized_deployment | bool
---
+- name: create list secondary_realms
+ set_fact:
+ secondary_realms: "{{ secondary_realms | default([]) | union([{ 'realm': item.rgw_realm, 'zonegroup': item.rgw_zonegroup, 'zone': item.rgw_zone, 'endpoint': item.endpoint, 'system_access_key': item.system_access_key, 'system_secret_key': item.system_secret_key, 'is_master': item.rgw_zonemaster | default(hostvars[item.host]['rgw_zonemaster']) }]) }}"
+ loop: "{{ rgw_instances_all }}"
+ run_once: true
+ when: not item.rgw_zonemaster | default(hostvars[item.host]['rgw_zonemaster']) | bool
+
- name: ensure connection to primary cluster from mon
uri:
url: "{{ item.endpoint }}"
uri:
url: "{{ item.endpoint }}"
loop: "{{ rgw_instances }}"
+ when: not item.rgw_zonemaster | default(rgw_zonemaster) | bool
- 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 }}"
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 deploy_secondary_zones | default(True)) or
+ (rgw_multisite | bool and item.rgw_zonemaster | default(rgw_zonemaster)))
- name: enable the ceph-radosgw.target service
systemd:
- 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:
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
+
dashboard_enabled: False
ceph_docker_registry: quay.ceph.io
ceph_docker_image: ceph-ci/daemon
-ceph_docker_image_tag: latest-nautilus
\ No newline at end of file
+ceph_docker_image_tag: latest-nautilus
copy_admin_key: true
# Enable Multisite support
rgw_multisite: true
+rgw_multisite_proto: http
rgw_create_pools:
foo:
pg_num: 16
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
+---
rgw_instances:
- instance_name: 'rgw0'
- rgw_realm: 'france'
- rgw_zonegroup: 'idf'
- rgw_zone: 'paris'
+ rgw_zonemaster: True
+ rgw_zonesecondary: False
+ rgw_zonegroupmaster: True
+ rgw_realm: 'canada'
+ rgw_zonegroup: 'zonegroup-canada'
+ rgw_zone: montreal-00
radosgw_address: "{{ _radosgw_address }}"
radosgw_frontend_port: 8080
rgw_zone_user: jacques.chirac
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: false
+ rgw_realm: 'france'
+ rgw_zonegroup: 'zonegroup-france'
+ rgw_zone: montreal-01
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.107.12:8081
# functional testing
-rgw_multisite_endpoint_addr: 192.168.105.11
-radosgw_num_instances: 2
\ No newline at end of file
+rgw_multisite_endpoint_addr: 192.168.105.12
+radosgw_num_instances: 2
--- /dev/null
+---
+rgw_zonemaster: true
+rgw_zonesecondary: false
+rgw_zonegroupmaster: true
+rgw_multisite_proto: http
+rgw_instances:
+ - instance_name: 'rgw0'
+ rgw_realm: 'foo'
+ rgw_zonegroup: 'zonegroup123'
+ 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: 'zonegroup456'
+ 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.105.11
+radosgw_num_instances: 2
[rgws]
osd0
+rgw0
\ No newline at end of file
dashboard_enabled: False
ceph_docker_registry: quay.ceph.io
ceph_docker_image: ceph-ci/daemon
-ceph_docker_image_tag: latest-nautilus
\ No newline at end of file
+ceph_docker_image_tag: latest-nautilus
---
# Enable Multisite support
rgw_multisite: true
+rgw_multisite_proto: http
rgw_create_pools:
foo:
pg_num: 16
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_instances:
- instance_name: 'rgw0'
- rgw_realm: 'france'
- rgw_zonegroup: 'idf'
- rgw_zone: 'versailles'
+ rgw_zonemaster: false
+ rgw_zonesecondary: true
+ rgw_zonegroupmaster: false
+ rgw_realm: 'canada'
+ rgw_zonegroup: 'zonegroup-canada'
+ rgw_zone: paris-00
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.105.11:8080
+ endpoint: http://192.168.105.12:8080
- instance_name: 'rgw1'
- rgw_realm: 'usa'
- rgw_zonegroup: 'alaska'
- rgw_zone: 'anchorage'
+ rgw_zonemaster: True
+ rgw_zonesecondary: False
+ rgw_zonegroupmaster: True
+ rgw_realm: 'france'
+ rgw_zonegroup: 'zonegroup-france'
+ rgw_zone: paris-01
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.105.11:8081
# functional testing
-rgw_multisite_endpoint_addr: 192.168.107.11
-radosgw_num_instances: 2
\ No newline at end of file
+rgw_multisite_endpoint_addr: 192.168.107.12
+radosgw_num_instances: 2
--- /dev/null
+---
+rgw_zonemaster: false
+rgw_zonesecondary: true
+rgw_zonegroupmaster: false
+rgw_multisite_proto: http
+rgw_instances:
+ - instance_name: 'rgw0'
+ rgw_realm: 'foo'
+ rgw_zonegroup: 'zonegroup123'
+ rgw_zone: 'gotham_city-secondary'
+ 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.105.11:8080
+ - instance_name: 'rgw1'
+ rgw_realm: 'bar'
+ rgw_zonegroup: 'zonegroup456'
+ rgw_zone: 'metropolis-secondary'
+ 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.105.11:8081
+# functional testing
+rgw_multisite_endpoint_addr: 192.168.107.11
+radosgw_num_instances: 2
[rgws]
osd0
+rgw0
\ No newline at end of file
mon_vms: 1
osd_vms: 1
mds_vms: 0
-rgw_vms: 0
+rgw_vms: 1
nfs_vms: 0
grafana_server_vms: 0
rbd_mirror_vms: 0
mon_vms: 1
osd_vms: 1
mds_vms: 0
-rgw_vms: 0
+rgw_vms: 1
nfs_vms: 0
grafana_server_vms: 0
rbd_mirror_vms: 0
ceph_conf_overrides:
global:
osd_pool_default_size: 1
-dashboard_enabled: False
\ No newline at end of file
+dashboard_enabled: False
copy_admin_key: true
# Enable Multisite support
rgw_multisite: true
+rgw_multisite_proto: http
rgw_create_pools:
foo:
pg_num: 16
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
+---
rgw_instances:
- instance_name: 'rgw0'
- rgw_realm: 'france'
- rgw_zonegroup: 'idf'
- rgw_zone: 'paris'
+ rgw_zonemaster: True
+ rgw_zonesecondary: False
+ rgw_zonegroupmaster: True
+ rgw_realm: 'canada'
+ rgw_zonegroup: 'zonegroup-canada'
+ rgw_zone: montreal-00
radosgw_address: "{{ _radosgw_address }}"
radosgw_frontend_port: 8080
rgw_zone_user: jacques.chirac
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: false
+ rgw_realm: 'france'
+ rgw_zonegroup: 'zonegroup-france'
+ rgw_zone: montreal-01
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
--- /dev/null
+rgw_zonemaster: true
+rgw_zonesecondary: false
+rgw_zonegroupmaster: true
+rgw_multisite_proto: http
+rgw_instances:
+ - instance_name: 'rgw0'
+ rgw_realm: 'foo'
+ rgw_zonegroup: 'zonegroup123'
+ 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: 'zonegroup456'
+ 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
ceph_conf_overrides:
global:
osd_pool_default_size: 1
-dashboard_enabled: False
\ No newline at end of file
+dashboard_enabled: False
---
# Enable Multisite support
rgw_multisite: true
+rgw_multisite_proto: http
rgw_create_pools:
foo:
pg_num: 16
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_instances:
- instance_name: 'rgw0'
- rgw_realm: 'france'
- rgw_zonegroup: 'idf'
- rgw_zone: 'versailles'
+ rgw_zonemaster: false
+ rgw_zonesecondary: true
+ rgw_zonegroupmaster: false
+ rgw_realm: 'canada'
+ rgw_zonegroup: 'zonegroup-canada'
+ rgw_zone: paris-00
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_realm: 'france'
+ rgw_zonegroup: 'zonegroup-france'
+ rgw_zone: paris-01
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
--- /dev/null
+---
+rgw_zonemaster: false
+rgw_zonesecondary: true
+rgw_zonegroupmaster: false
+rgw_multisite_proto: http
+rgw_instances:
+ - instance_name: 'rgw0'
+ rgw_realm: 'foo'
+ rgw_zonegroup: 'zonegroup123'
+ rgw_zone: 'gotham_city-secondary'
+ 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: 'zonegroup456'
+ rgw_zone: 'metropolis-secondary'
+ 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
mon_vms: 1
osd_vms: 1
mds_vms: 0
-rgw_vms: 0
+rgw_vms: 1
nfs_vms: 0
grafana_server_vms: 0
rbd_mirror_vms: 0
mon_vms: 1
osd_vms: 1
mds_vms: 0
-rgw_vms: 0
+rgw_vms: 1
nfs_vms: 0
grafana_server_vms: 0
rbd_mirror_vms: 0
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 }} mb s3://testinfra-{{ item.rgw_realm }};
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 }}"
+ tags: upload
when:
- - rgw_zonemaster | bool
+ - item.rgw_zonemaster | default(rgw_zonemaster) | bool
- containerized_deployment | bool
- name: generate and upload a random a 10Mb file - non containerized
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 }} mb s3://testinfra-{{ item.rgw_realm }};
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 }}"
+ tags: upload
when:
- - rgw_zonemaster | bool
+ - item.rgw_zonemaster | default(rgw_zonemaster) | bool
- not containerized_deployment | bool
- name: get info from replicated file - containerized deployment
retries: 60
delay: 1
until: result is succeeded
+ tags: download
when:
- - not rgw_zonemaster | bool
+ - not item.rgw_zonemaster | default(rgw_zonemaster) | bool
- containerized_deployment | bool
- name: get info from replicated file - non containerized
retries: 60
delay: 1
until: result is succeeded
+ tags: download
when:
- - not rgw_zonemaster | bool
+ - not item.rgw_zonemaster | default(rgw_zonemaster) | bool
- not containerized_deployment | bool
ceph_docker_registry_username={env:DOCKER_HUB_USERNAME} \
ceph_docker_registry_password={env:DOCKER_HUB_PASSWORD} \
"
- ansible-playbook -vv -i {changedir}/hosts {toxinidir}/tests/functional/rgw_multisite.yml
- ansible-playbook --ssh-common-args='-F {changedir}/secondary/vagrant_ssh_config -o ControlMaster=auto -o ControlPersist=600s -o PreferredAuthentications=publickey' -vv -i {changedir}/secondary/hosts {toxinidir}/tests/functional/rgw_multisite.yml
+ ansible-playbook -vv -i {changedir}/{env:INVENTORY} {toxinidir}/{env:PLAYBOOK:site.yml.sample} --limit rgws --extra-vars "\
+ ceph_stable_release={env:CEPH_STABLE_RELEASE:nautilus} \
+ ceph_docker_registry_auth=True \
+ ceph_docker_registry_username={env:DOCKER_HUB_USERNAME} \
+ ceph_docker_registry_password={env:DOCKER_HUB_PASSWORD} \
+ "
+ ansible-playbook -vv -i {changedir}/hosts {toxinidir}/tests/functional/rgw_multisite.yml --skip-tags download
+ ansible-playbook --ssh-common-args='-F {changedir}/secondary/vagrant_ssh_config -o ControlMaster=auto -o ControlPersist=600s -o PreferredAuthentications=publickey' -vv -i {changedir}/secondary/hosts {toxinidir}/tests/functional/rgw_multisite.yml --skip-tags download
+ ansible-playbook -vv -i {changedir}/hosts {toxinidir}/tests/functional/rgw_multisite.yml --skip-tags upload
+ ansible-playbook --ssh-common-args='-F {changedir}/secondary/vagrant_ssh_config -o ControlMaster=auto -o ControlPersist=600s -o PreferredAuthentications=publickey' -vv -i {changedir}/secondary/hosts {toxinidir}/tests/functional/rgw_multisite.yml --skip-tags upload
bash -c "cd {changedir}/secondary && vagrant destroy --force"
# clean rule after the scenario is complete
ansible -i localhost, all -c local -b -m iptables -a 'chain=FORWARD protocol=tcp source=192.168.0.0/16 destination=192.168.0.0/16 jump=ACCEPT action=insert rule_num=1 state=absent'
ansible-playbook -vv -i {changedir}/{env:INVENTORY} {toxinidir}/{env:PLAYBOOK:site.yml.sample} --extra-vars "\
delegate_facts_host={env:DELEGATE_FACTS_HOST:True} \
ceph_stable_release={env:CEPH_STABLE_RELEASE:nautilus} \
+ deploy_secondary_zones=False \
ceph_docker_registry_auth=True \
ceph_docker_registry_username={env:DOCKER_HUB_USERNAME} \
ceph_docker_registry_password={env:DOCKER_HUB_PASSWORD} \