lunics.disk

Ansible role: DISK

Manage disk partitions at every level:

  • primary partition
  • luks
  • lvm
  • btrfs

Only tested on Archlinux.

Works by default for live systems with chroot=/mnt, set chroot: "" if you want to run the role on the real system.

erase_disk.yml is not supported yet.

Usage

Override defaults

gpt:
  - device: /dev/nvme0n1
    partition:
     - number: 1
       start:  0%
       end:    300MiB
       flags:  esp
     - number: 2
       start:  300MiB
       end:    100%
luks:
  - partition: /dev/nvme0n1p2
    name:      luks
    password:  "{{ vault.luks }}"
lvm:
  - vgname: lvm
    disks:
      - /dev/mapper/luks
    volumes:
      - lvname:     swap
        size:       16g
      - lvname:     btrfs
        size:       100%FREE
fs:
  - fstype:   vfat            # ESP (UEFI System Partition) must be in FAT variant vfat/FAT32
    dev:      /dev/nvme0n1p1
    force:    true
    label:    boot
    path:     /boot
    dump:     1
    passno:   2
  - fstype:   swap
    dev:      /dev/lvm/swap
    label:    swap
  - fstype:   btrfs
    dev:      /dev/lvm/btrfs
    mkfs_opts: --nodiscard --checksum xxhash
    label:    btrfs
    path:     /
btrfs:                # btrfs subvolumes
  - name: "@"
    mnt_opts: relatime,errors=remount-ro
  - name: "@home"
    mnt_opts: rw,relatime,nodev,nosuid
  - name: "@logs"
    path: /var/log
    cow:  false       # disable Copy-On-Write
    mnt_opts: rw,relatime,nodev,nosuid,noexec
  - name: "@cache"
    path: /var/cache/
    cow:  false
    mnt_opts: rw,relatime,nodev,nosuid,noexec
  - name: "@packages"
    path: /var/cache/pacman
    cow:  false
    mnt_opts: rw,relatime,nodev,nosuid,noexec
  - name: "@libvirt"
    path: /var/lib/libvirt
    cow:  false
    mnt_opts: rw,relatime,nodev,nosuid,noexec
  - name: "@var_tmp"
    path: /var/tmp
    opts: noatime,nodiratime,nodev,nosuid
    cow:  false
  - name: "@opt"
  - name: "@tmp"
    mnt_opts: rw,nodev,nosuid,noexec
  - name: "@root"
  - name: "@snapshots"
  - name: "@srv"
  - name: "@usr"
    mnt_opts: rw,noatime,nodev

Result:

nvme0n1         259:0    0 238.5G  0 disk
├─nvme0n1p1     259:2    0   299M  0 part  /boot
└─nvme0n1p2     259:5    0 238.2G  0 part
  └─luks        254:1    0 238.2G  0 crypt
    ├─lvm-swap  254:2    0    16G  0 lvm   [SWAP]
    └─lvm-btrfs 254:3    0 222.2G  0 lvm   /usr
                                           /srv
                                           /snapshots
                                           /root
                                           /tmp
                                           /opt
                                           /var/lib/libvirt
                                           /var/cache/pacman
                                           /var/cache
                                           /var/log
                                           /home
                                           /

TODO

  • change path chroot by another variable
About

A role to manage disk partitions

Install
ansible-galaxy install lunics.disk
GitHub repository
License
gpl-3.0
Downloads
23
Owner