blob: 5b1a8320adf1d502e66db4eb9a92adff85efa562 [file] [log] [blame]
Ondrej Smola81d1a192017-08-17 11:13:10 +02001{%- from "ceph/map.jinja" import osd, common with context %}
2
Ondrej Smola81d1a192017-08-17 11:13:10 +02003ceph_osd_packages:
4 pkg.installed:
5 - names: {{ osd.pkgs }}
6
Jiri Broulik42552052018-02-15 15:23:29 +01007/etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf:
Ondrej Smola81d1a192017-08-17 11:13:10 +02008 file.managed:
9 - source: salt://ceph/files/{{ common.version }}/ceph.conf.{{ grains.os_family }}
10 - template: jinja
11 - require:
12 - pkg: ceph_osd_packages
13
Jiri Broulikd5729042017-09-19 20:07:22 +020014{% set ceph_version = pillar.ceph.common.version %}
Ondrej Smola81d1a192017-08-17 11:13:10 +020015
Jiri Broulik8870b872018-01-24 18:04:25 +010016{%- if osd.backend is defined %}
17
Jiri Broulikd5729042017-09-19 20:07:22 +020018{%- for backend_name, backend in osd.backend.iteritems() %}
Ondrej Smola81d1a192017-08-17 11:13:10 +020019
Jiri Broulikd5729042017-09-19 20:07:22 +020020{%- for disk in backend.disks %}
Ondrej Smola81d1a192017-08-17 11:13:10 +020021
Jiri Broulikd5729042017-09-19 20:07:22 +020022{%- if disk.get('enabled', True) %}
Ondrej Smola81d1a192017-08-17 11:13:10 +020023
Jiri Broulikd5729042017-09-19 20:07:22 +020024{% set dev = disk.dev %}
Ondrej Smola81d1a192017-08-17 11:13:10 +020025
Jiri Broulik8870b872018-01-24 18:04:25 +010026# for uniqueness
Mykyta Karpin37949ba2018-11-21 12:31:28 +020027{% set dev_device = dev + disk.get('data_partition_prefix', '') + disk.get('data_partition', 1)|string %}
Jiri Broulik8870b872018-01-24 18:04:25 +010028
29#{{ dev }}{{ disk.get('data_partition', 1) }}
30
31zap_disk_{{ dev_device }}:
Ondrej Smola81d1a192017-08-17 11:13:10 +020032 cmd.run:
Jiri Broulikd5729042017-09-19 20:07:22 +020033 - name: "ceph-disk zap {{ dev }}"
Michel Nederlof29033982018-06-12 15:47:39 +020034 - unless: "ceph-disk list | grep {{ dev }} | grep -e 'ceph' -e 'mounted'"
Ondrej Smola81d1a192017-08-17 11:13:10 +020035 - require:
Jiri Broulikd5729042017-09-19 20:07:22 +020036 - pkg: ceph_osd_packages
Jiri Broulik42552052018-02-15 15:23:29 +010037 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Tomáš Kukrál9ddb95b2017-08-17 14:18:51 +020038 {%- if grains.get('noservices') %}
39 - onlyif: /bin/false
40 {%- endif %}
Ondrej Smola81d1a192017-08-17 11:13:10 +020041
Jiri Broulikd5729042017-09-19 20:07:22 +020042{%- if disk.journal is defined %}
Ondrej Smola81d1a192017-08-17 11:13:10 +020043
Jiri Broulik8870b872018-01-24 18:04:25 +010044zap_disk_journal_{{ disk.journal }}_for_{{ dev_device }}:
Jiri Broulikd5729042017-09-19 20:07:22 +020045 cmd.run:
46 - name: "ceph-disk zap {{ disk.journal }}"
Michel Nederlof29033982018-06-12 15:47:39 +020047 - unless: "ceph-disk list | grep {{ disk.journal }} | grep -e 'ceph' -e 'mounted'"
Jiri Broulikd5729042017-09-19 20:07:22 +020048 - require:
49 - pkg: ceph_osd_packages
Jiri Broulik42552052018-02-15 15:23:29 +010050 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Jiri Broulik8870b872018-01-24 18:04:25 +010051 - cmd: zap_disk_{{ dev_device }}
Jiri Broulikd5729042017-09-19 20:07:22 +020052 {%- if grains.get('noservices') %}
53 - onlyif: /bin/false
54 {%- endif %}
55
56{%- endif %}
57
58{%- if disk.block_db is defined %}
59
Jiri Broulik8870b872018-01-24 18:04:25 +010060zap_disk_blockdb_{{ disk.block_db }}_for_{{ dev_device }}:
Jiri Broulikd5729042017-09-19 20:07:22 +020061 cmd.run:
62 - name: "ceph-disk zap {{ disk.block_db }}"
Michel Nederlof29033982018-06-12 15:47:39 +020063 - unless: "ceph-disk list | grep {{ disk.block_db }} | grep -e 'ceph' -e 'mounted'"
Jiri Broulikd5729042017-09-19 20:07:22 +020064 - require:
65 - pkg: ceph_osd_packages
Jiri Broulik42552052018-02-15 15:23:29 +010066 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Jiri Broulik8870b872018-01-24 18:04:25 +010067 - cmd: zap_disk_{{ dev_device }}
Jiri Broulikd5729042017-09-19 20:07:22 +020068 {%- if grains.get('noservices') %}
69 - onlyif: /bin/false
70 {%- endif %}
71
72{%- endif %}
73
74{%- if disk.block_wal is defined %}
75
Jiri Broulik8870b872018-01-24 18:04:25 +010076zap_disk_blockwal_{{ disk.block_wal }}_for_{{ dev_device }}:
Jiri Broulikd5729042017-09-19 20:07:22 +020077 cmd.run:
78 - name: "ceph-disk zap {{ disk.block_wal }}"
Michel Nederlof29033982018-06-12 15:47:39 +020079 - unless: "ceph-disk list | grep {{ disk.block_wal }} | grep -e 'ceph' -e 'mounted'"
Jiri Broulikd5729042017-09-19 20:07:22 +020080 - require:
81 - pkg: ceph_osd_packages
Jiri Broulik42552052018-02-15 15:23:29 +010082 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Jiri Broulik8870b872018-01-24 18:04:25 +010083 - cmd: zap_disk_{{ dev_device }}
Jiri Broulikd5729042017-09-19 20:07:22 +020084 {%- if grains.get('noservices') %}
85 - onlyif: /bin/false
86 {%- endif %}
87
88{%- endif %}
89
Jiri Broulik58ff84b2017-11-21 14:23:51 +010090{%- set cmd = [] %}
Jiri Broulik42552052018-02-15 15:23:29 +010091{%- do cmd.append('--cluster ' + common.get('cluster_name', 'ceph')) %}
92{%- do cmd.append('--cluster-uuid ' + common.fsid) %}
Jiri Broulik58ff84b2017-11-21 14:23:51 +010093{%- if disk.get('dmcrypt', False) %}
Jiri Broulik8870b872018-01-24 18:04:25 +010094 {%- do cmd.append('--dmcrypt') %}
95 {%- do cmd.append('--dmcrypt-key-dir ' + disk.get('dmcrypt_key_dir', '/etc/ceph/dmcrypt-keys')) %}
96{%- endif %}
97{%- if disk.lockbox_partition is defined %}
98 {%- do cmd.append('--lockbox-partition-number ' + disk.lockbox_partition|string) %}
Jiri Broulik58ff84b2017-11-21 14:23:51 +010099{%- endif %}
Jiri Broulik42552052018-02-15 15:23:29 +0100100{%- do cmd.append("--prepare-key /etc/ceph/" + common.get('cluster_name', 'ceph') + ".client.bootstrap-osd.keyring") %}
Jiri Broulik8870b872018-01-24 18:04:25 +0100101{%- if disk.data_partition is defined %}
102 {%- do cmd.append('--data-partition-number ' + disk.data_partition|string) %}
103{%- endif %}
104{%- if disk.data_partition_size is defined %}
105 {%- do cmd.append('--data-partition-size ' + disk.data_partition_size|string) %}
106{%- endif %}
Jiri Broulik58ff84b2017-11-21 14:23:51 +0100107{%- if backend_name == 'bluestore' %}
Jiri Broulik8870b872018-01-24 18:04:25 +0100108 {%- do cmd.append('--bluestore') %}
109 {%- if disk.block_partition is defined %}
110 {%- do cmd.append('--block-partition-number ' + disk.block_partition|string) %}
111 {%- endif %}
112 {%- if disk.block_db is defined %}
113 {%- if disk.block_db_dmcrypt is defined and not disk.block_db_dmcrypt %}
114 {%- do cmd.append('--block-db-non-dmcrypt') %}
115 {%- elif disk.get('block_db_dmcrypt', False) %}
116 {%- do cmd.append('--block-db-dmcrypt') %}
117 {%- endif %}
118 {%- if disk.block_db_partition is defined %}
119 {%- do cmd.append('--block-db-partition-number ' + disk.block_db_partition|string) %}
120 {%- endif %}
121 {%- do cmd.append('--block.db ' + disk.block_db) %}
122 {%- endif %}
123 {%- if disk.block_wal is defined %}
124 {%- if disk.block_wal_dmcrypt is defined and not disk.block_wal_dmcrypt %}
125 {%- do cmd.append('--block-wal-non-dmcrypt') %}
126 {%- elif disk.get('block_wal_dmcrypt', False) %}
127 {%- do cmd.append('--block-wal-dmcrypt') %}
128 {%- endif %}
129 {%- if disk.block_wal_partition is defined %}
130 {%- do cmd.append('--block-wal-partition-number ' + disk.block_wal_partition|string) %}
131 {%- endif %}
132 {%- do cmd.append('--block.wal ' + disk.block_wal) %}
133 {%- endif %}
134 {%- do cmd.append(dev) %}
Jiri Broulik58ff84b2017-11-21 14:23:51 +0100135{%- elif backend_name == 'filestore' and ceph_version not in ['kraken', 'jewel'] %}
Jiri Broulik8870b872018-01-24 18:04:25 +0100136 {%- if disk.journal_dmcrypt is defined and not disk.journal_dmcrypt %}
137 {%- do cmd.append('--journal-non-dmcrypt') %}
138 {%- elif disk.get('journal_dmcrypt', False) %}
139 {%- do cmd.append('--journal-dmcrypt') %}
140 {%- endif %}
141 {%- if disk.journal_partition is defined %}
142 {%- do cmd.append('--journal-partition-number ' + disk.journal_partition|string) %}
143 {%- endif %}
144 {%- do cmd.append('--filestore') %}
145 {%- do cmd.append(dev) %}
146 {%- if disk.journal is defined %}
147 {%- do cmd.append(disk.journal) %}
148 {%- endif %}
Jiri Broulik58ff84b2017-11-21 14:23:51 +0100149{%- elif backend_name == 'filestore' %}
Jiri Broulik8870b872018-01-24 18:04:25 +0100150 {%- if disk.journal_dmcrypt is defined and not disk.journal_dmcrypt %}
151 {%- do cmd.append('--journal-non-dmcrypt') %}
152 {%- elif disk.get('journal_dmcrypt', False) %}
153 {%- do cmd.append('--journal-dmcrypt') %}
154 {%- endif %}
155 {%- if disk.journal_partition is defined %}
156 {%- do cmd.append('--journal-partition-number ' + disk.journal_partition|string) %}
157 {%- endif %}
158 {%- do cmd.append(dev) %}
159 {%- if disk.journal is defined %}
160 {%- do cmd.append(disk.journal) %}
161 {%- endif %}
Jiri Broulik58ff84b2017-11-21 14:23:51 +0100162{%- endif %}
163
Jiri Broulik8870b872018-01-24 18:04:25 +0100164prepare_disk_{{ dev_device }}:
Jiri Broulikd5729042017-09-19 20:07:22 +0200165 cmd.run:
Jiri Broulik58ff84b2017-11-21 14:23:51 +0100166 - name: "yes | ceph-disk prepare {{ cmd|join(' ') }}"
Michel Nederlof29033982018-06-12 15:47:39 +0200167 - unless: "ceph-disk list | grep {{ dev_device }} | grep -e 'ceph' -e 'mounted'"
Jiri Broulikd5729042017-09-19 20:07:22 +0200168 - require:
Jiri Broulik8870b872018-01-24 18:04:25 +0100169 - cmd: zap_disk_{{ dev_device }}
Jiri Broulikd5729042017-09-19 20:07:22 +0200170 - pkg: ceph_osd_packages
Jiri Broulik42552052018-02-15 15:23:29 +0100171 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Jiri Broulikd5729042017-09-19 20:07:22 +0200172 {%- if grains.get('noservices') %}
173 - onlyif: /bin/false
174 {%- endif %}
175
Jiri Broulik8870b872018-01-24 18:04:25 +0100176reload_partition_table_{{ dev_device }}:
Jiri Broulikd5729042017-09-19 20:07:22 +0200177 cmd.run:
178 - name: "partprobe"
cdodda579f5652018-12-11 16:08:18 -0600179 - unless: "lsblk -p | grep {{ dev_device }} -A1 | grep -v lockbox | grep {{ dev_device }} | grep ceph | grep osd"
Jiri Broulikd5729042017-09-19 20:07:22 +0200180 - require:
Jiri Broulik8870b872018-01-24 18:04:25 +0100181 - cmd: prepare_disk_{{ dev_device }}
182 - cmd: zap_disk_{{ dev_device }}
Jiri Broulikd5729042017-09-19 20:07:22 +0200183 - pkg: ceph_osd_packages
Jiri Broulik42552052018-02-15 15:23:29 +0100184 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Jiri Broulikd5729042017-09-19 20:07:22 +0200185 {%- if grains.get('noservices') %}
186 - onlyif: /bin/false
Michel Nederlof29033982018-06-12 15:47:39 +0200187 {%- else %}
188 - onlyif: ceph-disk list | grep {{ dev_device }} | grep ceph
Jiri Broulikd5729042017-09-19 20:07:22 +0200189 {%- endif %}
190
Jiri Broulik8870b872018-01-24 18:04:25 +0100191activate_disk_{{ dev_device }}:
Jiri Broulikd5729042017-09-19 20:07:22 +0200192 cmd.run:
Jiri Broulik58ff84b2017-11-21 14:23:51 +0100193{%- if disk.get('dmcrypt', False) %}
Jiri Broulik42552052018-02-15 15:23:29 +0100194 - name: "ceph-disk activate --dmcrypt --activate-key /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.bootstrap-osd.keyring {{ dev_device }}"
Jiri Broulik58ff84b2017-11-21 14:23:51 +0100195{%- else %}
Jiri Broulik42552052018-02-15 15:23:29 +0100196 - name: "ceph-disk activate --activate-key /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.bootstrap-osd.keyring {{ dev_device }}"
Jiri Broulik58ff84b2017-11-21 14:23:51 +0100197{%- endif %}
cdodda579f5652018-12-11 16:08:18 -0600198 - unless: "lsblk -p | grep {{ dev_device }} -A1 | grep -v lockbox | grep {{ dev_device }} | grep ceph | grep osd"
Jiri Broulikd5729042017-09-19 20:07:22 +0200199 - require:
Jiri Broulik8870b872018-01-24 18:04:25 +0100200 - cmd: prepare_disk_{{ dev_device }}
201 - cmd: zap_disk_{{ dev_device }}
Jiri Broulikd5729042017-09-19 20:07:22 +0200202 - pkg: ceph_osd_packages
Jiri Broulik42552052018-02-15 15:23:29 +0100203 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Jiri Broulikd5729042017-09-19 20:07:22 +0200204 {%- if grains.get('noservices') %}
205 - onlyif: /bin/false
Michel Nederlof29033982018-06-12 15:47:39 +0200206 {%- else %}
207 - onlyif: ceph-disk list | grep {{ dev_device }} | grep ceph
Jiri Broulikd5729042017-09-19 20:07:22 +0200208 {%- endif %}
209
210{%- endif %}
211
212{%- endfor %}
213
214{%- endfor %}
Ondrej Smola81d1a192017-08-17 11:13:10 +0200215
Jiri Broulik8870b872018-01-24 18:04:25 +0100216{%- endif %}
217
Ondrej Smola81d1a192017-08-17 11:13:10 +0200218osd_services_global:
219 service.running:
220 - enable: true
221 - names: ['ceph-osd.target']
222 - watch:
Jiri Broulik42552052018-02-15 15:23:29 +0100223 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Tomáš Kukrál9ddb95b2017-08-17 14:18:51 +0200224 {%- if grains.get('noservices') %}
225 - onlyif: /bin/false
226 {%- endif %}
227
Ondrej Smola81d1a192017-08-17 11:13:10 +0200228osd_services:
229 service.running:
230 - enable: true
231 - names: ['ceph.target']
232 - watch:
Jiri Broulik42552052018-02-15 15:23:29 +0100233 - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf
Tomáš Kukrál9ddb95b2017-08-17 14:18:51 +0200234 {%- if grains.get('noservices') %}
235 - onlyif: /bin/false
236 {%- endif %}