mirror of https://github.com/ceph/ceph-ansible.git
113 lines
3.3 KiB
YAML
113 lines
3.3 KiB
YAML
|
---
|
||
|
# This playbook use to migrate activity osd(s) journal to SSD.
|
||
|
#
|
||
|
# You should define `osds_journal_devices` variable for host which osd(s) journal migrate to.
|
||
|
#
|
||
|
# For example in host_vars/hostname1.yml
|
||
|
#
|
||
|
# osds_journal_devices:
|
||
|
# - device_name: /dev/sdd
|
||
|
# partitions:
|
||
|
# - index: 1
|
||
|
# size: 10G
|
||
|
# osd_id: 0
|
||
|
# - index: 2
|
||
|
# size: 10G
|
||
|
# osd_id: 1
|
||
|
# - device_name: /dev/sdf
|
||
|
# partitions:
|
||
|
# - index: 1
|
||
|
# size: 10G
|
||
|
# osd_id: 2
|
||
|
#
|
||
|
# @param device_name: The full device path of new ssd.
|
||
|
# @param partitions: The custom partition layout of ssd.
|
||
|
# @param index: The index of this partition.
|
||
|
# @param size: The size of this partition.
|
||
|
# @param osd_id: Which osds's journal this partition for.
|
||
|
#
|
||
|
# ansible-playbook migrate-journal-to-ssd.yml
|
||
|
# The playbook will migrate osd(s) journal to ssd device which you define in host_vars.
|
||
|
|
||
|
- vars:
|
||
|
osd_group_name: osds
|
||
|
journal_typecode: 45b0969e-9b03-4f30-b4c6-b4b80ceff106
|
||
|
osds_journal_devices: []
|
||
|
hosts:
|
||
|
- "{{ osd_group_name }}"
|
||
|
serial: 1
|
||
|
tasks:
|
||
|
|
||
|
- name: get osd(s) if directory stat
|
||
|
stat:
|
||
|
path: "/var/lib/ceph/osd/{{ cluster }}-{{ item.1.osd_id }}/journal_uuid"
|
||
|
register: osds_dir_stat
|
||
|
with_subelements:
|
||
|
- "{{ osds_journal_devices }}"
|
||
|
- partitions
|
||
|
|
||
|
- name: exit playbook osd(s) is not on this host
|
||
|
fail:
|
||
|
msg: exit playbook osd(s) is not on this host
|
||
|
with_items:
|
||
|
osds_dir_stat.results
|
||
|
when:
|
||
|
- osds_dir_stat is defined and item.stat.exists == false
|
||
|
|
||
|
- name: install sgdisk(gdisk)
|
||
|
package:
|
||
|
name: gdisk
|
||
|
state: present
|
||
|
when: osds_journal_devices is defined
|
||
|
|
||
|
- name: generate uuid for osds journal
|
||
|
command: uuidgen
|
||
|
register: osds
|
||
|
with_subelements:
|
||
|
- "{{ osds_journal_devices }}"
|
||
|
- partitions
|
||
|
|
||
|
- name: make osd partitions on ssd
|
||
|
shell: >
|
||
|
sgdisk --new={{item.item[1].index}}:0:+{{item.item[1].size}} "--change-name={{ item.item[1].index }}:ceph journal"
|
||
|
--typecode={{ item.item[1].index }}:{{ journal_typecode }}
|
||
|
--partition-guid={{ item.item[1].index }}:{{ item.stdout }}
|
||
|
--mbrtogpt -- {{ item.item[0].device_name }}
|
||
|
with_items:
|
||
|
- "{{ osds.results }}"
|
||
|
|
||
|
- name: stop osd(s) service
|
||
|
service:
|
||
|
name: "ceph-osd@{{ item.item[1].osd_id }}"
|
||
|
state: stopped
|
||
|
with_items:
|
||
|
- "{{ osds.results }}"
|
||
|
|
||
|
- name: flush osd(s) journal
|
||
|
command: ceph-osd -i {{ item.item[1].osd_id }} --flush-journal --cluster {{ cluster }}
|
||
|
with_items:
|
||
|
- "{{ osds.results }}"
|
||
|
when: osds_journal_devices is defined
|
||
|
|
||
|
- name: update osd(s) journal soft link
|
||
|
command: ln -sf /dev/disk/by-partuuid/{{ item.stdout }} /var/lib/ceph/osd/{{ cluster }}-{{ item.item[1].osd_id }}/journal
|
||
|
with_items:
|
||
|
- "{{ osds.results }}"
|
||
|
|
||
|
- name: update osd(s) journal uuid
|
||
|
command: echo {{ item.stdout }} > /var/lib/ceph/osd/{{ cluster }}-{{ item.item[1].osd_id }}/journal_uuid
|
||
|
with_items:
|
||
|
- "{{ osds.results }}"
|
||
|
|
||
|
- name: initialize osd(s) new journal
|
||
|
command: ceph-osd -i {{ item.item[1].osd_id }} --mkjournal --cluster {{ cluster }}
|
||
|
with_items:
|
||
|
- "{{ osds.results }}"
|
||
|
|
||
|
- name: start osd(s) service
|
||
|
service:
|
||
|
name: "ceph-osd@{{ item.item[1].osd_id }}"
|
||
|
state: started
|
||
|
with_items:
|
||
|
- "{{ osds.results }}"
|