Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
---
- include_tasks: pkg_{{ ansible_os_family | lower }}.yml
- name: Install cephadm
package:
name: cephadm
state: present
become: True
- name: Ensure /etc/ceph exists
file:
path: /etc/ceph
state: directory
become: True
- name: Generate ssh key for cephadm
openssh_keypair:
path: "/etc/ceph/cephadm.id"
size: 4096
comment: "cephadm"
become: True
register: cephadm_ssh_key
- name: Save public key
copy:
content: "{{ cephadm_ssh_key.public_key }}"
dest: /etc/ceph/cephadm.pub
become: True
- name: Copy cephadm public key to all hosts
authorized_key:
user: root
state: present
key: "{{ cephadm_ssh_key.public_key }}"
become: True
with_inventory_hostnames:
- all
delegate_to: "{{ item }}"
- name: Bootstrap cephadm
vars:
mon_ip: "{{ hostvars[inventory_hostname]['ansible_'+api_interface_name].ipv4.address }}"
command:
cmd: >
cephadm bootstrap
--ssh-private-key=/etc/ceph/cephadm.id
--ssh-public-key=/etc/ceph/cephadm.pub
--skip-monitoring-stack
--skip-dashboard
--skip-firewalld
--mon-ip={{ mon_ip }}
--mon-addrv='[v2:{{ mon_ip }}:3300,v1:{{ mon_ip }}:6789]'
become: True
register: cephadm_bootstrap_output
- name: Get ceph fsid
vars:
regexp: 'Cluster fsid: (.*)'
set_fact:
ceph_fsid: "{{ cephadm_bootstrap_output.stdout | regex_search(regexp,'\\1') | first }}"
- name: Template out cluster spec
template:
src: templates/cephadm.yml.j2
dest: "/var/run/ceph/{{ ceph_fsid }}/cluster.yml"
become: True
- name: Check Ceph Orchestrator state
command:
cmd: >
cephadm shell --
ceph orch status --detail
become: True
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
- name: Apply cluster spec
command:
cmd: >
cephadm shell --
ceph orch apply -i /var/run/ceph/cluster.yml
become: True
- name: Add osds
command:
cmd: >
cephadm shell --
ceph orch daemon add osd {{ item }}
become: True
loop: "{{ cephadm_ceph_osd_devices }}"
- name: Create and initialise pools for OpenStack services
command:
cmd: >
cephadm shell --
ceph osd pool create {{ item }}
with_items: "{{ cephadm_ceph_pools }}"
become: true
- name: Create users for OpenStack services
command:
cmd: >
cephadm shell --
ceph auth get-or-create {{ item }}
become: true
with_items: "{{ cephadm_ceph_users }}"
# TODO(mnasiadka): Fix merge_configs to support tabs
- name: Generate ceph.conf without tabs
vars:
ceph_conf_fixed: |
[global]
fsid = {{ ceph_fsid }}
mon_host = {% for host in groups['all'] %} {{ hostvars[host]['ansible_'+api_interface_name].ipv4.address }} {% if not loop.last %},{% endif %} {% endfor %}
copy:
content: "{{ ceph_conf_fixed }}"
dest: /etc/ceph/ceph.conf
become: True
- name: Check ceph health
command:
cmd: cephadm shell -- ceph health detail
become: True