| {%- from "linux/map.jinja" import storage with context %} |
| {%- if storage.enabled %} |
| |
| parted: |
| pkg.installed |
| |
| xfsprogs: |
| pkg.installed |
| |
| {%- for disk_name, disk in storage.disk.items() %} |
| {%- set disk_name = disk.name|default(disk_name) %} |
| |
| create_disk_label_{{ disk_name }}: |
| module.run: |
| - name: partition.mklabel |
| - device: {{ disk_name }} |
| - label_type: {{ disk.get('type', 'dos') }} |
| - unless: "fdisk -l {{ disk_name }} | grep -i 'Disklabel type: {{ disk.get('type', 'dos') }}'" |
| - require: |
| - pkg: parted |
| |
| {% set end_size = 0 -%} |
| {% if disk.get('startsector', None) %} |
| {% set end_size = disk.get('startsector')|int %} |
| {% endif %} |
| |
| {%- for partition in disk.get('partitions', []) %} |
| |
| create_partition_{{ disk_name }}_{{ loop.index }}: |
| module.run: |
| - name: partition.mkpart |
| - device: {{ disk_name }} |
| - part_type: primary |
| {%- if partition.type is defined %} |
| - fs_type: {{ partition.type }} |
| {%- endif %} |
| - start: {{ end_size }}MB |
| - end: {{ end_size + partition.size }}MB |
| - unless: "blkid {{ disk_name }}{{ loop.index }} {{ disk_name }}p{{ loop.index }}" |
| - require: |
| - module: create_disk_label_{{ disk_name }} |
| - pkg: xfsprogs |
| |
| {% set end_size = end_size + partition.size -%} |
| |
| {%- endfor %} |
| |
| probe_partions_{{ disk_name }}: |
| module.run: |
| - name: partition.probe |
| - device: {{ disk_name }} |
| |
| {%- for partition in disk.get('partitions', []) %} |
| |
| {%- if partition.get('mkfs') and partition.type == "xfs" %} |
| |
| mkfs_partition_{{ disk_name }}_{{ loop.index }}: |
| module.run: |
| - name: xfs.mkfs |
| - device: {{ disk_name }}{{ loop.index }} |
| - unless: "blkid {{ disk_name }}{{ loop.index }} {{ disk_name }}p{{ loop.index }} | grep xfs" |
| - require: |
| - module: create_partition_{{ disk_name }}_{{ loop.index }} |
| |
| {%- endif %} |
| |
| {%- endfor %} |
| |
| {%- endfor %} |
| |
| {%- endif %} |