pvc-ansible/roles/pvc/tasks/ceph/bootstrap.yml

92 lines
3.1 KiB
YAML
Raw Normal View History

2023-09-01 15:42:19 -04:00
---
- name: generate cluster FSID
command: uuidgen
register: fsid_raw
delegate_to: localhost
2023-09-01 15:42:22 -04:00
become: no
2023-09-01 15:42:19 -04:00
- set_fact:
fsid: "{{ fsid_raw.stdout }}"
2023-09-01 15:42:20 -04:00
- name: create bootstrap ceph.conf
file:
dest: /etc/ceph/ceph.conf
state: touch
2023-09-01 15:42:19 -04:00
- name: initialize bootstrap ceph.conf
lineinfile:
dest: /etc/ceph/ceph.conf
2023-09-01 15:42:20 -04:00
line: "{{ item }}"
2023-09-01 15:42:19 -04:00
state: present
2023-09-01 15:42:20 -04:00
with_items:
- "[global]"
- "fsid = {{ fsid }}"
- "mon initial members = {% for host in pvc_nodes if host.is_coordinator %}{{ host.hostname }}{% if not loop.last %},{% endif %}{% endfor %}"
2023-09-01 15:42:22 -04:00
- "mon host = {% for host in pvc_nodes if host.is_coordinator %}{{ host.storage_ip }}{% if not loop.last %},{% endif %}{% endfor %}"
2023-09-01 15:42:19 -04:00
- 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
2023-09-01 15:42:22 -04:00
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 *'
2023-09-01 15:42:19 -04:00
- 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
2023-09-01 15:42:22 -04:00
command: monmaptool --create --fsid {{ fsid }} {% for node in pvc_nodes if node.is_coordinator %}--add {{ node.hostname }} {{ node.storage_ip }} {% endfor %} /tmp/ceph-bootstrap/monmap
2023-09-01 15:42:19 -04:00
- 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:
2023-09-01 15:42:22 -04:00
- "public network = {{ pvc_storage_subnet }}"
2023-09-01 15:42:19 -04:00
- "cluster network = {{ pvc_storage_subnet }}"
- "auth cluster required = cephx"
- "auth service required = cephx"
- "auth client required = cephx"
2023-09-01 15:42:20 -04:00
- "mon allow pool delete = 1"
2023-09-01 15:42:19 -04:00
- "osd journal size = 2"
- "osd pool default size = 3"
- "osd pool default min size = 2"
- "osd pool default pg num = 512"
- "osd pool default pgp num = 512"
- "osd crush chooseleaf type = 1"
- name: collect bootstrapped Ceph files into the role
fetch:
src: /tmp/ceph-bootstrap/{{ item }}
dest: roles/pvc/files/ceph/{{ hostvars[inventory_hostname].group_names[0] }}/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