summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2020-07-04 23:13:53 +0200
committerChristian Pointner <equinox@spreadspace.org>2020-07-04 23:13:53 +0200
commit0cb4843b17a18b396b81e3b0f6f2fc0776c7bfbe (patch)
tree9b7c83541007793b553b3f78e1963d9c98bc8828 /roles
parentremove ch-hcloudtest (diff)
preseed/parman: implement more generic disk layout
Diffstat (limited to 'roles')
-rw-r--r--roles/installer/debian/preseed/defaults/main.yml23
-rw-r--r--roles/installer/debian/preseed/templates/partman_config.j2131
2 files changed, 86 insertions, 68 deletions
diff --git a/roles/installer/debian/preseed/defaults/main.yml b/roles/installer/debian/preseed/defaults/main.yml
index a864c1bd..cfdef902 100644
--- a/roles/installer/debian/preseed/defaults/main.yml
+++ b/roles/installer/debian/preseed/defaults/main.yml
@@ -5,3 +5,26 @@
preseed_no_netplan: no
preseed_virtual_machine: no
+
+preseed_efi_esp_size: 128
+preseed_swraid_boot_size: 256
+
+preseed_system_lvm_reserve: 384
+preseed_system_lvm_size_default: all
+preseed_system_lvm_volumes_default:
+ - name: root
+ size: 2560M
+ filesystem: ext4
+ mountpoint: /
+ - name: var
+ size: 1280M
+ filesystem: ext4
+ mountpoint: /var
+ - name: var+log
+ size: 768M
+ filesystem: ext4
+ mountpoint: /var/log
+ mount_options:
+ - noatime
+ - nodev
+ - noexec
diff --git a/roles/installer/debian/preseed/templates/partman_config.j2 b/roles/installer/debian/preseed/templates/partman_config.j2
index ca6feb41..4ae3241f 100644
--- a/roles/installer/debian/preseed/templates/partman_config.j2
+++ b/roles/installer/debian/preseed/templates/partman_config.j2
@@ -32,89 +32,84 @@ d-i partman-basicfilesystems/choose_label string msdos
d-i partman-basicfilesystems/default_label string msdos
{% endif %}
+{% set system_lvm_size = hostvars[install_hostname].install_cooked.system_lvm.size | default(preseed_system_lvm_size_default) %}
+{% set system_lvm_volumes = hostvars[install_hostname].install_cooked.system_lvm.volumes | default(preseed_system_lvm_volumes_default) %}
+{# on small disks this probably triggers: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=896826 ... #}
+{# set system_lvm_pv_size_min_mb = (((system_lvm_volumes | map(attribute='size') | map('human_to_bytes') | sum) / (1024*1024)) | int) + preseed_system_lvm_reserve #}
+{# ... so let's go for a 1 MB minimum. #}
+{% set system_lvm_pv_size_min_mb = 1 %}
{% if hostvars[install_hostname].install_cooked.disks.primary == "software-raid" %}
d-i partman-auto/method string raid
{% else %}
d-i partman-auto/method string lvm
{% endif %}
-
-d-i partman-auto/expert_recipe string \
- ansible :: \
+d-i partman-auto/expert_recipe string \
+ ansible :: \
{% if (hostvars[install_hostname].install_cooked.efi | default(false)) %}
- 128 128 128 fat16 \
- $primary{ } $bootable{ } \
- method{ efi } format{ } \
- . \
+ {{ preseed_efi_esp_size }} {{ preseed_efi_esp_size }} {{ preseed_efi_esp_size }} fat16 \
+ $primary{ } $bootable{ } \
+ method{ efi } format{ } \
+ . \
{% endif %}
{% if hostvars[install_hostname].install_cooked.disks.primary == "software-raid" %}
- 256 256 256 raid \
- $lvmignore{ } $primary{ } $bootable{ } \
- method{ raid } \
- . \
-{% if 'root_lvm_size' in hostvars[install_hostname].install_cooked.disks and hostvars[install_hostname].install_cooked.disks.root_lvm_size != 'all' %}
-{% set root_lvm_size = ((hostvars[install_hostname].install_cooked.disks.root_lvm_size | human_to_bytes) / (1024*1024)) | int %}
- {{ root_lvm_size }} {{ root_lvm_size }} {{ root_lvm_size }} raid \
- $lvmignore{ } $primary{ } \
- method{ raid } \
- . \
- 8 108 -1 ext4 \
- $lvmignore{ } $primary{ } \
- method{ unused } \
- . \
+ {{ preseed_swraid_boot_size }} {{ preseed_swraid_boot_size }} {{ preseed_swraid_boot_size }} raid \
+ $lvmignore{ } $primary{ } $bootable{ } \
+ method{ raid } \
+ . \
+
+{% if system_lvm_size != 'all' %}
+{% set system_lvm_size_mb = ((system_lvm_size | human_to_bytes) / (1024*1024)) | int %}
+ {{ system_lvm_size_mb }} {{ system_lvm_size_mb }} {{ system_lvm_size_mb }} raid \
+ $lvmignore{ } $primary{ } \
+ method{ raid } \
+ . \
+ 1 101 -1 ext4 \
+ $lvmignore{ } $primary{ } \
+ method{ unused } \
+ . \
{% else %}
- 5120 5120 5120 raid \
- $lvmignore{ } $primary{ } \
- method{ raid } \
- . \
+ {{ system_lvm_pv_size_min_mb }} {{ system_lvm_pv_size_min_mb + 100 }} -1 raid \
+ $lvmignore{ } $primary{ } \
+ method{ raid } \
+ . \
{% endif %}
{% else %}
-{% if 'root_lvm_size' in hostvars[install_hostname].install_cooked.disks and hostvars[install_hostname].install_cooked.disks.root_lvm_size != 'all' %}
-{% set root_lvm_size = ((hostvars[install_hostname].install_cooked.disks.root_lvm_size | human_to_bytes) / (1024*1024)) | int %}
- {{ root_lvm_size }} {{ root_lvm_size }} {{ root_lvm_size }} lvm \
- $defaultignore{ } $primary{ } \
- method{ lvm } vg_name{ {{ hostvars[install_hostname].host_name }} } \
- . \
- 8 108 -1 ext4 \
- $defaultignore{ } $primary{ } \
- method{ unused } \
- . \
+{% if system_lvm_size != 'all' %}
+{% set system_lvm_size_mb = ((system_lvm_size | human_to_bytes) / (1024*1024)) | int %}
+ {{ system_lvm_size_mb }} {{ system_lvm_size_mb }} {{ system_lvm_size_mb }} lvm \
+ $defaultignore{ } $primary{ } \
+ method{ lvm } vg_name{ {{ hostvars[install_hostname].host_name }} } \
+ . \
+ 1 101 -1 ext4 \
+ $defaultignore{ } $primary{ } \
+ method{ unused } \
+ . \
{% else %}
- 5120 5120 5120 lvm \
- $defaultignore{ } $primary{ } \
- method{ lvm } vg_name{ {{ hostvars[install_hostname].host_name }} } \
- . \
+ {{ system_lvm_pv_size_min_mb }} {{ system_lvm_pv_size_min_mb + 100 }} -1 lvm \
+ $defaultignore{ } $primary{ } \
+ method{ lvm } vg_name{ {{ hostvars[install_hostname].host_name }} } \
+ . \
{% endif %}
{% endif %}
- 2560 2560 2560 ext4 \
- $defaultignore{ } $lvmok{ } \
- in_vg{ {{ hostvars[install_hostname].host_name }} } \
- method{ format } format{ } \
- use_filesystem{ } filesystem{ ext4 } \
- mountpoint{ / } \
- . \
- 1280 1280 1280 ext4 \
- $defaultignore{ } $lvmok{ } \
- in_vg{ {{ hostvars[install_hostname].host_name }} } \
- method{ format } format{ } \
- use_filesystem{ } filesystem{ ext4 } \
- mountpoint{ /var } \
- . \
- 768 768 768 ext4 \
- $defaultignore{ } $lvmok{ } \
- in_vg{ {{ hostvars[install_hostname].host_name }} } \
- method{ format } format{ } \
- use_filesystem{ } filesystem{ ext4 } \
- mountpoint{ /var/log } \
- options/nodev{ nodev } \
- options/noatime{ noatime } \
- options/noexec{ noexec } \
- . \
- 8 108 -1 ext4 \
- $defaultignore{ } $lvmok{ } \
- in_vg{ {{ hostvars[install_hostname].host_name }} } \
- lv_name{ dummy } \
- method{ unused } \
+{% for volume in system_lvm_volumes %}
+{% set volume_size = ((volume.size | human_to_bytes) / (1024*1024)) | int %}
+ {{ volume_size }} {{ volume_size }} {{ volume_size }} {{ volume.filesystem }} \
+ $defaultignore{ } $lvmok{ } \
+ in_vg{ {{ hostvars[install_hostname].host_name }} } lv_name{ {{ volume.name }} } \
+ method{ format } format{ } \
+ use_filesystem{ } filesystem{ {{ volume.filesystem }} } \
+ mountpoint{ {{ volume.mountpoint }} } \
+ mountpoint{ {{ volume.mountpoint }} } \
+{% for option in volume.mount_options | default([]) %}
+ options/{{ option }}{ {{ option }} } \
+{% endfor %}
+ . \
+{% endfor %}
+ 1 101 -1 ext4 \
+ $defaultignore{ } $lvmok{ } \
+ in_vg{ {{ hostvars[install_hostname].host_name }} } lv_name{ dummy } \
+ method{ unused } \
.