{%- 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 %}