mirror of https://github.com/ceph/ceph-ansible.git
ceph-{mon,osd}: move default crush variables
Since ed36a11
we move the crush rules creation code from the ceph-mon to
the ceph-osd role.
To keep the backward compatibility we kept the possibility to set the
crush variables on the mons side but we didn't move the default values.
As a result, when using crush_rule_config set to true and wanted to use
the default values for crush_rules then the crush rule ansible task
creation will fail.
"msg": "'ansible.vars.hostvars.HostVarsVars object' has no attribute
'crush_rules'"
This patch move the default crush variables from ceph-mon to ceph-osd
role but also use those default values when nothing is defined on the
mons side.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1798864
Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
pull/5054/head
parent
15bd4cd189
commit
1fc6b33714
|
@ -36,39 +36,6 @@ dummy:
|
||||||
# mds: allow *
|
# mds: allow *
|
||||||
# mgr: allow *
|
# mgr: allow *
|
||||||
|
|
||||||
###############
|
|
||||||
# CRUSH RULES #
|
|
||||||
###############
|
|
||||||
#crush_rule_config: false
|
|
||||||
|
|
||||||
#crush_rule_hdd:
|
|
||||||
# name: HDD
|
|
||||||
# root: default
|
|
||||||
# type: host
|
|
||||||
# class: hdd
|
|
||||||
# default: false
|
|
||||||
|
|
||||||
#crush_rule_ssd:
|
|
||||||
# name: SSD
|
|
||||||
# root: default
|
|
||||||
# type: host
|
|
||||||
# class: ssd
|
|
||||||
# default: false
|
|
||||||
|
|
||||||
#crush_rules:
|
|
||||||
# - "{{ crush_rule_hdd }}"
|
|
||||||
# - "{{ crush_rule_ssd }}"
|
|
||||||
|
|
||||||
# Caution: this will create crush roots and racks according to hostvars {{ osd_crush_location }}
|
|
||||||
# and will move hosts into them which might lead to significant data movement in the cluster!
|
|
||||||
#
|
|
||||||
# In order for the playbook to create CRUSH hierarchy, you have to setup your Ansible inventory file like so:
|
|
||||||
#
|
|
||||||
# [osds]
|
|
||||||
# ceph-osd-01 osd_crush_location="{ 'root': 'mon-roottt', 'rack': 'mon-rackkkk', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
|
|
||||||
#
|
|
||||||
# Note that 'host' is mandatory and that you need to submit at least two bucket type (including the host)
|
|
||||||
#create_crush_tree: false
|
|
||||||
|
|
||||||
##########
|
##########
|
||||||
# DOCKER #
|
# DOCKER #
|
||||||
|
|
|
@ -125,6 +125,39 @@ dummy:
|
||||||
#crush_device_class: ""
|
#crush_device_class: ""
|
||||||
#osds_per_device: 1
|
#osds_per_device: 1
|
||||||
|
|
||||||
|
###############
|
||||||
|
# CRUSH RULES #
|
||||||
|
###############
|
||||||
|
#crush_rule_config: false
|
||||||
|
|
||||||
|
#crush_rule_hdd:
|
||||||
|
# name: HDD
|
||||||
|
# root: default
|
||||||
|
# type: host
|
||||||
|
# class: hdd
|
||||||
|
# default: false
|
||||||
|
|
||||||
|
#crush_rule_ssd:
|
||||||
|
# name: SSD
|
||||||
|
# root: default
|
||||||
|
# type: host
|
||||||
|
# class: ssd
|
||||||
|
# default: false
|
||||||
|
|
||||||
|
#crush_rules:
|
||||||
|
# - "{{ crush_rule_hdd }}"
|
||||||
|
# - "{{ crush_rule_ssd }}"
|
||||||
|
|
||||||
|
# Caution: this will create crush roots and racks according to hostvars {{ osd_crush_location }}
|
||||||
|
# and will move hosts into them which might lead to significant data movement in the cluster!
|
||||||
|
#
|
||||||
|
# In order for the playbook to create CRUSH hierarchy, you have to setup your Ansible inventory file like so:
|
||||||
|
#
|
||||||
|
# [osds]
|
||||||
|
# ceph-osd-01 osd_crush_location="{ 'root': 'mon-roottt', 'rack': 'mon-rackkkk', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
|
||||||
|
#
|
||||||
|
# Note that 'host' is mandatory and that you need to submit at least two bucket type (including the host)
|
||||||
|
#create_crush_tree: false
|
||||||
|
|
||||||
##########
|
##########
|
||||||
# DOCKER #
|
# DOCKER #
|
||||||
|
|
|
@ -28,39 +28,6 @@ client_admin_ceph_authtool_cap:
|
||||||
mds: allow *
|
mds: allow *
|
||||||
mgr: allow *
|
mgr: allow *
|
||||||
|
|
||||||
###############
|
|
||||||
# CRUSH RULES #
|
|
||||||
###############
|
|
||||||
crush_rule_config: false
|
|
||||||
|
|
||||||
crush_rule_hdd:
|
|
||||||
name: HDD
|
|
||||||
root: default
|
|
||||||
type: host
|
|
||||||
class: hdd
|
|
||||||
default: false
|
|
||||||
|
|
||||||
crush_rule_ssd:
|
|
||||||
name: SSD
|
|
||||||
root: default
|
|
||||||
type: host
|
|
||||||
class: ssd
|
|
||||||
default: false
|
|
||||||
|
|
||||||
crush_rules:
|
|
||||||
- "{{ crush_rule_hdd }}"
|
|
||||||
- "{{ crush_rule_ssd }}"
|
|
||||||
|
|
||||||
# Caution: this will create crush roots and racks according to hostvars {{ osd_crush_location }}
|
|
||||||
# and will move hosts into them which might lead to significant data movement in the cluster!
|
|
||||||
#
|
|
||||||
# In order for the playbook to create CRUSH hierarchy, you have to setup your Ansible inventory file like so:
|
|
||||||
#
|
|
||||||
# [osds]
|
|
||||||
# ceph-osd-01 osd_crush_location="{ 'root': 'mon-roottt', 'rack': 'mon-rackkkk', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
|
|
||||||
#
|
|
||||||
# Note that 'host' is mandatory and that you need to submit at least two bucket type (including the host)
|
|
||||||
create_crush_tree: false
|
|
||||||
|
|
||||||
##########
|
##########
|
||||||
# DOCKER #
|
# DOCKER #
|
||||||
|
|
|
@ -117,6 +117,39 @@ lvm_volumes: []
|
||||||
crush_device_class: ""
|
crush_device_class: ""
|
||||||
osds_per_device: 1
|
osds_per_device: 1
|
||||||
|
|
||||||
|
###############
|
||||||
|
# CRUSH RULES #
|
||||||
|
###############
|
||||||
|
crush_rule_config: false
|
||||||
|
|
||||||
|
crush_rule_hdd:
|
||||||
|
name: HDD
|
||||||
|
root: default
|
||||||
|
type: host
|
||||||
|
class: hdd
|
||||||
|
default: false
|
||||||
|
|
||||||
|
crush_rule_ssd:
|
||||||
|
name: SSD
|
||||||
|
root: default
|
||||||
|
type: host
|
||||||
|
class: ssd
|
||||||
|
default: false
|
||||||
|
|
||||||
|
crush_rules:
|
||||||
|
- "{{ crush_rule_hdd }}"
|
||||||
|
- "{{ crush_rule_ssd }}"
|
||||||
|
|
||||||
|
# Caution: this will create crush roots and racks according to hostvars {{ osd_crush_location }}
|
||||||
|
# and will move hosts into them which might lead to significant data movement in the cluster!
|
||||||
|
#
|
||||||
|
# In order for the playbook to create CRUSH hierarchy, you have to setup your Ansible inventory file like so:
|
||||||
|
#
|
||||||
|
# [osds]
|
||||||
|
# ceph-osd-01 osd_crush_location="{ 'root': 'mon-roottt', 'rack': 'mon-rackkkk', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
|
||||||
|
#
|
||||||
|
# Note that 'host' is mandatory and that you need to submit at least two bucket type (including the host)
|
||||||
|
create_crush_tree: false
|
||||||
|
|
||||||
##########
|
##########
|
||||||
# DOCKER #
|
# DOCKER #
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
register: config_crush_hierarchy
|
register: config_crush_hierarchy
|
||||||
delegate_to: '{{ groups[mon_group_name][0] }}'
|
delegate_to: '{{ groups[mon_group_name][0] }}'
|
||||||
when:
|
when:
|
||||||
- hostvars[groups[mon_group_name][0]]['create_crush_tree'] | default(false) | bool
|
- hostvars[groups[mon_group_name][0]]['create_crush_tree'] | default(create_crush_tree) | bool
|
||||||
- osd_crush_location is defined
|
- osd_crush_location is defined
|
||||||
|
|
||||||
- name: create configured crush rules
|
- name: create configured crush rules
|
||||||
command: "{{ hostvars[groups[mon_group_name][0]]['container_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd crush rule {{ 'create-replicated' if item.class is defined else 'create-simple' }} {{ item.name }} {{ item.root }} {{ item.type }} {{ item.class | default('') }}"
|
command: "{{ hostvars[groups[mon_group_name][0]]['container_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd crush rule {{ 'create-replicated' if item.class is defined else 'create-simple' }} {{ item.name }} {{ item.root }} {{ item.type }} {{ item.class | default('') }}"
|
||||||
changed_when: false
|
changed_when: false
|
||||||
with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | unique }}"
|
with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | default(crush_rules) | unique }}"
|
||||||
delegate_to: '{{ groups[mon_group_name][0] }}'
|
delegate_to: '{{ groups[mon_group_name][0] }}'
|
||||||
run_once: true
|
run_once: true
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
command: "{{ hostvars[groups[mon_group_name][0]]['container_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd -f json crush rule dump {{ item.name }}"
|
command: "{{ hostvars[groups[mon_group_name][0]]['container_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd -f json crush rule dump {{ item.name }}"
|
||||||
register: info_ceph_default_crush_rule
|
register: info_ceph_default_crush_rule
|
||||||
changed_when: false
|
changed_when: false
|
||||||
with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | unique }}"
|
with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | default(crush_rules) | unique }}"
|
||||||
delegate_to: '{{ groups[mon_group_name][0] }}'
|
delegate_to: '{{ groups[mon_group_name][0] }}'
|
||||||
run_once: true
|
run_once: true
|
||||||
when: item.default | bool
|
when: item.default | bool
|
||||||
|
|
|
@ -87,7 +87,7 @@
|
||||||
|
|
||||||
- name: include crush_rules.yml
|
- name: include crush_rules.yml
|
||||||
include_tasks: crush_rules.yml
|
include_tasks: crush_rules.yml
|
||||||
when: hostvars[groups[mon_group_name][0]]['crush_rule_config'] | default(false) | bool
|
when: hostvars[groups[mon_group_name][0]]['crush_rule_config'] | default(crush_rule_config) | bool
|
||||||
|
|
||||||
- name: set_fact openstack_keys_tmp - preserve backward compatibility after the introduction of the ceph_keys module
|
- name: set_fact openstack_keys_tmp - preserve backward compatibility after the introduction of the ceph_keys module
|
||||||
set_fact:
|
set_fact:
|
||||||
|
|
Loading…
Reference in New Issue