Hello John,
Thank you for pointing me to the right direction. I wish I could be
more knowledgeable in using ceph-ansible for making customization at
the deployment time.
After going through the docs, I came up with the following environment
file in hope to assign SSD to the "vms" pool and HDD to the "volumes"
pool using TripleO.
parameter_defaults:
# Create CRUSH rules using device_class {hdd|ssh} supported by
Luminous release
CephAnsibleExtraConfig:
crush_rule_config: true
crush_rule_hdd:
name: replicated_hdd
root: default
type: host
device_class: hdd
default: false
crush_rule_ssd:
name: replicated_ssd
root: default
type: host
device_class: ssd
default: false
crush_rules:
- "{{ crush_rule_hdd }}"
- "{{ crush_rule_ssd }}"
create_crush_tree: true
# Create overcloud pools with custom crush rules {replicated_hdd |
replicated_ssh}
CephPools:
- name: vms
rule_name: replicated_ssd
- name: volumes
rule_name: replicated_hdd
Does it look right?
Thank you very much and have a good weekend!
Best regards,
Cody
On Sat, Oct 13, 2018 at 3:33 AM John Fulton <johfulto(a)redhat.com> wrote:
On Saturday, October 13, 2018, Cody <codeology.lab(a)gmail.com> wrote:
>
> Hi everyone,
>
> Is it possible to define CRUSH placement rules and apply to different
> pools while using TripleO to deploy an overcloud with Ceph
> integration?
>
> I wish to set the "vms" pool to use SSDs and "volumes" pool to
use
> HDDs. On a pre-existing Ceph cluster, I can define CRUSH placement
> rules using device-class and apply the corresponding rules when create
> pools. But, I don't know how to do so with TripleO.
>
> Could someone shed light on this?
CRUSH rules may be passed to specific nodes. You may identify specific nodes in TripleO
by using node-specific overrides as per:
https://docs.openstack.org/tripleo-docs/latest/install/advanced_deploymen...
In the documentation above a specific devices list is passed to a specific node. However,
you may pass other properties to the specific node including the osd_crush_location. For
example:
{"32C2BC31-F6BB-49AA-971A-377EFDFDB111": {"osd_crush_location":
{"root": "standard_root", "rack": "rack1_std",
"host": "lab-ceph01"}},
TripleO then will map the node's UUID to the IP used in the ceph-ansible inventory
and pass node specific variable overrides.
You'll also want to use CephAnsibleExtraConfig to override specific ceph-ansible
variables for all nodes, e.g.
CephAnsibleExtraConfig:
create_crush_tree: true
More info at
https://docs.openstack.org/tripleo-docs/latest/install/advanced_deploymen...
Overall, if you know how to make ceph-ansible do what you need it to do, then TripleO can
pass the variables to ceph-ansible to achieve it.
John
>
>
> Best regards,
> Cody
> _______________________________________________
> users mailing list
> users(a)lists.rdoproject.org
>
http://lists.rdoproject.org/mailman/listinfo/users
>
> To unsubscribe: users-unsubscribe(a)lists.rdoproject.org