mirror of https://github.com/ceph/ceph-ansible.git
ceph-rgw: allow specifying crush rule on pool
We already support specifiying a custom crush rule during pool creation
in ceph-osd role but not in ceph-rgw role.
This patch adds the missing code to implement this feature.
Note this is only available for replicated pool not erasure. The rule
must also exist prior the pool creation.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1855439
Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
(cherry picked from commit cb8f0237e1
)
pull/5763/head
parent
43da364188
commit
df70345e6a
|
@ -50,6 +50,9 @@ dummy:
|
||||||
# each pool.
|
# each pool.
|
||||||
# - If a pool's type is 'ec', k and m values must be set via
|
# - If a pool's type is 'ec', k and m values must be set via
|
||||||
# the ec_k, and ec_m variables.
|
# the ec_k, and ec_m variables.
|
||||||
|
# - The rule_name key can be used with a specific crush rule value (must exist).
|
||||||
|
# If the key doesn't exist it falls back to the default replicated_rule.
|
||||||
|
# This only works for replicated pool type not erasure.
|
||||||
|
|
||||||
#rgw_create_pools:
|
#rgw_create_pools:
|
||||||
# "{{ rgw_zone }}.rgw.buckets.data":
|
# "{{ rgw_zone }}.rgw.buckets.data":
|
||||||
|
@ -74,6 +77,7 @@ dummy:
|
||||||
# pg_num: 8
|
# pg_num: 8
|
||||||
# size: 3
|
# size: 3
|
||||||
# type: replicated
|
# type: replicated
|
||||||
|
# rule_name: foo
|
||||||
|
|
||||||
|
|
||||||
##########
|
##########
|
||||||
|
|
|
@ -42,6 +42,9 @@ copy_admin_key: false
|
||||||
# each pool.
|
# each pool.
|
||||||
# - If a pool's type is 'ec', k and m values must be set via
|
# - If a pool's type is 'ec', k and m values must be set via
|
||||||
# the ec_k, and ec_m variables.
|
# the ec_k, and ec_m variables.
|
||||||
|
# - The rule_name key can be used with a specific crush rule value (must exist).
|
||||||
|
# If the key doesn't exist it falls back to the default replicated_rule.
|
||||||
|
# This only works for replicated pool type not erasure.
|
||||||
|
|
||||||
#rgw_create_pools:
|
#rgw_create_pools:
|
||||||
# "{{ rgw_zone }}.rgw.buckets.data":
|
# "{{ rgw_zone }}.rgw.buckets.data":
|
||||||
|
@ -66,6 +69,7 @@ copy_admin_key: false
|
||||||
# pg_num: 8
|
# pg_num: 8
|
||||||
# size: 3
|
# size: 3
|
||||||
# type: replicated
|
# type: replicated
|
||||||
|
# rule_name: foo
|
||||||
|
|
||||||
|
|
||||||
##########
|
##########
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
- item.value.type == 'ec'
|
- item.value.type == 'ec'
|
||||||
|
|
||||||
- name: create replicated pools for rgw
|
- name: create replicated pools for rgw
|
||||||
command: "{{ container_exec_cmd }} ceph --connect-timeout 10 --cluster {{ cluster }} osd pool create {{ item.key }} {{ item.value.pg_num | default(osd_pool_default_pg_num) }} replicated"
|
command: "{{ container_exec_cmd }} ceph --connect-timeout 10 --cluster {{ cluster }} osd pool create {{ item.key }} {{ item.value.pg_num | default(osd_pool_default_pg_num) }} replicated {{ item.value.rule_name | default(ceph_osd_pool_default_crush_rule_name) }}"
|
||||||
changed_when: false
|
changed_when: false
|
||||||
register: result
|
register: result
|
||||||
retries: 60
|
retries: 60
|
||||||
|
@ -60,6 +60,19 @@
|
||||||
- item.value.type is not defined or item.value.type == 'replicated'
|
- item.value.type is not defined or item.value.type == 'replicated'
|
||||||
- item.value.size | default(osd_pool_default_size) != ceph_osd_pool_default_size
|
- item.value.size | default(osd_pool_default_size) != ceph_osd_pool_default_size
|
||||||
|
|
||||||
|
- name: customize replicated pool crush_rule
|
||||||
|
command: "{{ container_exec_cmd }} ceph --connect-timeout 10 --cluster {{ cluster }} osd pool set {{ item.key }} crush_rule {{ item.value.rule_name | default(ceph_osd_pool_default_crush_rule_name) }}"
|
||||||
|
register: result
|
||||||
|
retries: 60
|
||||||
|
delay: 3
|
||||||
|
until: result is succeeded
|
||||||
|
loop: "{{ rgw_create_pools | dict2items }}"
|
||||||
|
delegate_to: "{{ groups[mon_group_name][0] }}"
|
||||||
|
changed_when: false
|
||||||
|
when:
|
||||||
|
- item.value.type is not defined or item.value.type == 'replicated'
|
||||||
|
- item.value.rule_name | default(ceph_osd_pool_default_crush_rule_name)
|
||||||
|
|
||||||
- name: set the rgw_create_pools pools application to rgw
|
- name: set the rgw_create_pools pools application to rgw
|
||||||
command: "{{ container_exec_cmd }} ceph --connect-timeout 10 --cluster {{ cluster }} osd pool application enable {{ item.key }} rgw"
|
command: "{{ container_exec_cmd }} ceph --connect-timeout 10 --cluster {{ cluster }} osd pool application enable {{ item.key }} rgw"
|
||||||
register: result
|
register: result
|
||||||
|
|
Loading…
Reference in New Issue