Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Full support for {{ osd_crush_location }} #2195

Closed
eduardegorov opened this issue Nov 17, 2017 · 1 comment
Closed

Full support for {{ osd_crush_location }} #2195

eduardegorov opened this issue Nov 17, 2017 · 1 comment
Labels

Comments

@eduardegorov
Copy link
Contributor

Hello,

Currently, we can define crush location for each host but only crush roots and crush rules are created (see https://github.com/ceph/ceph-ansible/blob/master/roles/ceph-mon/tasks/crush_rules.yml). This pull request automates other routines for having a complete solution:
1) Creates rack type crush buckets defined in {{ ceph_crush_rack }} of each osd host. If it's not defined by user then a rack named 'default_rack_{{ ceph_crush_root }}' would be added and used in next steps.
2) Move rack type crush buckets defined in {{ ceph_crush_rack }} into crush roots defined in {{ ceph_crush_root }} of each osd host.
3) Move hosts defined in {{ ceph_crush_rack }} into crush roots defined in {{ ceph_crush_root }} of each osd host.

Draft implementation is in #2194.

Some questions and concerns:

  1. If user customizes {{ osd_crush_location }} by using other variable names instead of {{ ceph_crush_rack }} and {{ ceph_crush_root }} variables then the solution will obviously fail. Also, host type bucket are assumed to be named as {{ ansible_hostname}} of the host. As a weak workaround we can add comments with warning in mons.yml file but for proper solution, we need to parse {{ osd_crush_location }} of each host for "root=([^\s]+)" and similar patterns. Do you know any examples of doing such things in ansible scripts? Another problem is that {{ osd_crush_location }} is defined in osds.yml thus not available during execution of crush_rules.yml on mons. Maybe we should move these crush routines to ods? I assume we will have to fetch admin key there temporarily for executing crush commands, right?
  2. If we move execution to OSD hosts (see 1), then it'll be easy to make it's execution parallel by removing 'run_once: true' and osd group's items iteration but I have concerns on being able to work properly on large clusters when all hosts would try to execute crush commands simultaneously. What do you think about it?
@stale
Copy link

stale bot commented Oct 1, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix label Oct 1, 2019
@stale stale bot closed this as completed Oct 8, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant