Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 1 | {%- from "ceph/map.jinja" import osd, common with context %} |
| 2 | |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 3 | ceph_osd_packages: |
| 4 | pkg.installed: |
| 5 | - names: {{ osd.pkgs }} |
| 6 | |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 7 | /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf: |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 8 | 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 Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 14 | {% set ceph_version = pillar.ceph.common.version %} |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 15 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 16 | {%- if osd.backend is defined %} |
| 17 | |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 18 | {%- for backend_name, backend in osd.backend.iteritems() %} |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 19 | |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 20 | {%- for disk in backend.disks %} |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 21 | |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 22 | {%- if disk.get('enabled', True) %} |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 23 | |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 24 | {% set dev = disk.dev %} |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 25 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 26 | # for uniqueness |
Mykyta Karpin | 37949ba | 2018-11-21 12:31:28 +0200 | [diff] [blame] | 27 | {% set dev_device = dev + disk.get('data_partition_prefix', '') + disk.get('data_partition', 1)|string %} |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 28 | |
| 29 | #{{ dev }}{{ disk.get('data_partition', 1) }} |
| 30 | |
| 31 | zap_disk_{{ dev_device }}: |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 32 | cmd.run: |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 33 | - name: "ceph-disk zap {{ dev }}" |
Michel Nederlof | 2903398 | 2018-06-12 15:47:39 +0200 | [diff] [blame] | 34 | - unless: "ceph-disk list | grep {{ dev }} | grep -e 'ceph' -e 'mounted'" |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 35 | - require: |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 36 | - pkg: ceph_osd_packages |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 37 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Tomáš Kukrál | 9ddb95b | 2017-08-17 14:18:51 +0200 | [diff] [blame] | 38 | {%- if grains.get('noservices') %} |
| 39 | - onlyif: /bin/false |
| 40 | {%- endif %} |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 41 | |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 42 | {%- if disk.journal is defined %} |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 43 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 44 | zap_disk_journal_{{ disk.journal }}_for_{{ dev_device }}: |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 45 | cmd.run: |
| 46 | - name: "ceph-disk zap {{ disk.journal }}" |
Michel Nederlof | 2903398 | 2018-06-12 15:47:39 +0200 | [diff] [blame] | 47 | - unless: "ceph-disk list | grep {{ disk.journal }} | grep -e 'ceph' -e 'mounted'" |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 48 | - require: |
| 49 | - pkg: ceph_osd_packages |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 50 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 51 | - cmd: zap_disk_{{ dev_device }} |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 52 | {%- if grains.get('noservices') %} |
| 53 | - onlyif: /bin/false |
| 54 | {%- endif %} |
| 55 | |
| 56 | {%- endif %} |
| 57 | |
| 58 | {%- if disk.block_db is defined %} |
| 59 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 60 | zap_disk_blockdb_{{ disk.block_db }}_for_{{ dev_device }}: |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 61 | cmd.run: |
| 62 | - name: "ceph-disk zap {{ disk.block_db }}" |
Michel Nederlof | 2903398 | 2018-06-12 15:47:39 +0200 | [diff] [blame] | 63 | - unless: "ceph-disk list | grep {{ disk.block_db }} | grep -e 'ceph' -e 'mounted'" |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 64 | - require: |
| 65 | - pkg: ceph_osd_packages |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 66 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 67 | - cmd: zap_disk_{{ dev_device }} |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 68 | {%- if grains.get('noservices') %} |
| 69 | - onlyif: /bin/false |
| 70 | {%- endif %} |
| 71 | |
| 72 | {%- endif %} |
| 73 | |
| 74 | {%- if disk.block_wal is defined %} |
| 75 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 76 | zap_disk_blockwal_{{ disk.block_wal }}_for_{{ dev_device }}: |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 77 | cmd.run: |
| 78 | - name: "ceph-disk zap {{ disk.block_wal }}" |
Michel Nederlof | 2903398 | 2018-06-12 15:47:39 +0200 | [diff] [blame] | 79 | - unless: "ceph-disk list | grep {{ disk.block_wal }} | grep -e 'ceph' -e 'mounted'" |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 80 | - require: |
| 81 | - pkg: ceph_osd_packages |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 82 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 83 | - cmd: zap_disk_{{ dev_device }} |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 84 | {%- if grains.get('noservices') %} |
| 85 | - onlyif: /bin/false |
| 86 | {%- endif %} |
| 87 | |
| 88 | {%- endif %} |
| 89 | |
Jiri Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 90 | {%- set cmd = [] %} |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 91 | {%- do cmd.append('--cluster ' + common.get('cluster_name', 'ceph')) %} |
| 92 | {%- do cmd.append('--cluster-uuid ' + common.fsid) %} |
Jiri Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 93 | {%- if disk.get('dmcrypt', False) %} |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 94 | {%- 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 Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 99 | {%- endif %} |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 100 | {%- do cmd.append("--prepare-key /etc/ceph/" + common.get('cluster_name', 'ceph') + ".client.bootstrap-osd.keyring") %} |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 101 | {%- 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 Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 107 | {%- if backend_name == 'bluestore' %} |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 108 | {%- 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 Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 135 | {%- elif backend_name == 'filestore' and ceph_version not in ['kraken', 'jewel'] %} |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 136 | {%- 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 Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 149 | {%- elif backend_name == 'filestore' %} |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 150 | {%- 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 Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 162 | {%- endif %} |
| 163 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 164 | prepare_disk_{{ dev_device }}: |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 165 | cmd.run: |
Jiri Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 166 | - name: "yes | ceph-disk prepare {{ cmd|join(' ') }}" |
Michel Nederlof | 2903398 | 2018-06-12 15:47:39 +0200 | [diff] [blame] | 167 | - unless: "ceph-disk list | grep {{ dev_device }} | grep -e 'ceph' -e 'mounted'" |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 168 | - require: |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 169 | - cmd: zap_disk_{{ dev_device }} |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 170 | - pkg: ceph_osd_packages |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 171 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 172 | {%- if grains.get('noservices') %} |
| 173 | - onlyif: /bin/false |
| 174 | {%- endif %} |
| 175 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 176 | reload_partition_table_{{ dev_device }}: |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 177 | cmd.run: |
| 178 | - name: "partprobe" |
cdodda | 579f565 | 2018-12-11 16:08:18 -0600 | [diff] [blame] | 179 | - unless: "lsblk -p | grep {{ dev_device }} -A1 | grep -v lockbox | grep {{ dev_device }} | grep ceph | grep osd" |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 180 | - require: |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 181 | - cmd: prepare_disk_{{ dev_device }} |
| 182 | - cmd: zap_disk_{{ dev_device }} |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 183 | - pkg: ceph_osd_packages |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 184 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 185 | {%- if grains.get('noservices') %} |
| 186 | - onlyif: /bin/false |
Michel Nederlof | 2903398 | 2018-06-12 15:47:39 +0200 | [diff] [blame] | 187 | {%- else %} |
| 188 | - onlyif: ceph-disk list | grep {{ dev_device }} | grep ceph |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 189 | {%- endif %} |
| 190 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 191 | activate_disk_{{ dev_device }}: |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 192 | cmd.run: |
Jiri Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 193 | {%- if disk.get('dmcrypt', False) %} |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 194 | - name: "ceph-disk activate --dmcrypt --activate-key /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.bootstrap-osd.keyring {{ dev_device }}" |
Jiri Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 195 | {%- else %} |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 196 | - name: "ceph-disk activate --activate-key /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.client.bootstrap-osd.keyring {{ dev_device }}" |
Jiri Broulik | 58ff84b | 2017-11-21 14:23:51 +0100 | [diff] [blame] | 197 | {%- endif %} |
cdodda | 579f565 | 2018-12-11 16:08:18 -0600 | [diff] [blame] | 198 | - unless: "lsblk -p | grep {{ dev_device }} -A1 | grep -v lockbox | grep {{ dev_device }} | grep ceph | grep osd" |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 199 | - require: |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 200 | - cmd: prepare_disk_{{ dev_device }} |
| 201 | - cmd: zap_disk_{{ dev_device }} |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 202 | - pkg: ceph_osd_packages |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 203 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 204 | {%- if grains.get('noservices') %} |
| 205 | - onlyif: /bin/false |
Michel Nederlof | 2903398 | 2018-06-12 15:47:39 +0200 | [diff] [blame] | 206 | {%- else %} |
| 207 | - onlyif: ceph-disk list | grep {{ dev_device }} | grep ceph |
Jiri Broulik | d572904 | 2017-09-19 20:07:22 +0200 | [diff] [blame] | 208 | {%- endif %} |
| 209 | |
| 210 | {%- endif %} |
| 211 | |
| 212 | {%- endfor %} |
| 213 | |
| 214 | {%- endfor %} |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 215 | |
Jiri Broulik | 8870b87 | 2018-01-24 18:04:25 +0100 | [diff] [blame] | 216 | {%- endif %} |
| 217 | |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 218 | osd_services_global: |
| 219 | service.running: |
| 220 | - enable: true |
| 221 | - names: ['ceph-osd.target'] |
| 222 | - watch: |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 223 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Tomáš Kukrál | 9ddb95b | 2017-08-17 14:18:51 +0200 | [diff] [blame] | 224 | {%- if grains.get('noservices') %} |
| 225 | - onlyif: /bin/false |
| 226 | {%- endif %} |
| 227 | |
Ondrej Smola | 81d1a19 | 2017-08-17 11:13:10 +0200 | [diff] [blame] | 228 | osd_services: |
| 229 | service.running: |
| 230 | - enable: true |
| 231 | - names: ['ceph.target'] |
| 232 | - watch: |
Jiri Broulik | 4255205 | 2018-02-15 15:23:29 +0100 | [diff] [blame] | 233 | - file: /etc/ceph/{{ common.get('cluster_name', 'ceph') }}.conf |
Tomáš Kukrál | 9ddb95b | 2017-08-17 14:18:51 +0200 | [diff] [blame] | 234 | {%- if grains.get('noservices') %} |
| 235 | - onlyif: /bin/false |
| 236 | {%- endif %} |