Coupled with the removal of explicit --image-features flags to the RBD command in PVC itself, this ensures that only the two features supported on kernel 4.19 are enabled by default.
103 lines
3.5 KiB
YAML
103 lines
3.5 KiB
YAML
---
|
|
- name: generate cluster FSID
|
|
command: uuidgen
|
|
register: fsid_raw
|
|
delegate_to: localhost
|
|
become: no
|
|
|
|
- set_fact:
|
|
fsid: "{{ fsid_raw.stdout }}"
|
|
|
|
- name: create bootstrap ceph.conf
|
|
file:
|
|
dest: /etc/ceph/ceph.conf
|
|
state: touch
|
|
|
|
- name: initialize bootstrap ceph.conf
|
|
lineinfile:
|
|
dest: /etc/ceph/ceph.conf
|
|
line: "{{ item }}"
|
|
state: present
|
|
with_items:
|
|
- "[global]"
|
|
- "fsid = {{ fsid }}"
|
|
- "mon initial members = {% for node in pvc_nodes if node.is_coordinator %}{{ node.hostname.split('.')[0] }}{% if not loop.last %},{% endif %}{% endfor %}"
|
|
- "mon host = {% for host in pvc_nodes if host.is_coordinator %}{{ host.storage_ip }}{% if not loop.last %},{% endif %}{% endfor %}"
|
|
|
|
- name: create temporary directory
|
|
file:
|
|
dest: /tmp/ceph-bootstrap
|
|
state: directory
|
|
|
|
- name: create mon keyring
|
|
command: ceph-authtool --create-keyring /tmp/ceph-bootstrap/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
|
|
|
|
- name: create client admin keyring
|
|
command: ceph-authtool --create-keyring /tmp/ceph-bootstrap/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
|
|
|
|
- name: add client admin keyring to mon keyring
|
|
command: ceph-authtool /tmp/ceph-bootstrap/ceph.mon.keyring --import-keyring /tmp/ceph-bootstrap/ceph.client.admin.keyring
|
|
|
|
- name: create OSD bootstrap keyring
|
|
command: ceph-authtool --create-keyring /tmp/ceph-bootstrap/ceph.osd.bootstrap.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd'
|
|
|
|
- name: add OSD bootstrap keyring to mon keyring
|
|
command: ceph-authtool /tmp/ceph-bootstrap/ceph.mon.keyring --import-keyring /tmp/ceph-bootstrap/ceph.osd.bootstrap.keyring
|
|
|
|
- name: create monmap
|
|
command: monmaptool --create --fsid {{ fsid }} {% for node in pvc_nodes if node.is_coordinator %}--add {{ node.hostname.split('.')[0] }} {{ node.storage_ip }} {% endfor %} /tmp/ceph-bootstrap/monmap
|
|
|
|
- name: copy initial ceph.conf to the boostrap directory
|
|
copy:
|
|
src: /etc/ceph/ceph.conf
|
|
dest: /tmp/ceph-bootstrap/ceph.conf
|
|
remote_src: yes
|
|
|
|
- name: add additional configuration lines to ceph.conf
|
|
lineinfile:
|
|
dest: /tmp/ceph-bootstrap/ceph.conf
|
|
line: "{{ item }}"
|
|
state: present
|
|
with_items:
|
|
- "public network = {{ pvc_storage_subnet }}/{{ pvc_storage_netmask }}"
|
|
- "cluster network = {{ pvc_storage_subnet }}/{{ pvc_storage_netmask }}"
|
|
- "auth cluster required = cephx"
|
|
- "auth service required = cephx"
|
|
- "auth client required = cephx"
|
|
- "mon allow pool delete = 1"
|
|
- "osd journal size = 2"
|
|
- "osd pool default size = 3"
|
|
- "osd pool default min size = 2"
|
|
- "osd pool default pg num = 256"
|
|
- "osd pool default pgp num = 256"
|
|
- "osd crush chooseleaf type = 1"
|
|
- "bluestore cache autotune = true"
|
|
- "rbd default features = 5"
|
|
|
|
- name: add memory limit if requested
|
|
lineinfile:
|
|
dest: /tmp/ceph-bootstrap/ceph.conf
|
|
line: "{{ item }}"
|
|
state: present
|
|
with_items:
|
|
- "osd memory target = {{ pvc_osd_memory_limit }}"
|
|
when: pvc_osd_memory_limit is defined
|
|
|
|
- name: collect bootstrapped Ceph files into the role
|
|
fetch:
|
|
src: /tmp/ceph-bootstrap/{{ item }}
|
|
dest: files/{{ cluster_group }}/ceph/
|
|
flat: yes
|
|
with_items:
|
|
- ceph.conf
|
|
- ceph.mon.keyring
|
|
- ceph.client.admin.keyring
|
|
- ceph.osd.bootstrap.keyring
|
|
- monmap
|
|
|
|
- name: remove the temporary bootstrap directory
|
|
file:
|
|
dest: /tmp/ceph-bootstrap
|
|
state: absent
|
|
force: yes
|