This repository has been archived on 2025-02-14. You can view files and clone it, but cannot push or open issues or pull requests.
pyinfra-lxd/setup.sh

114 lines
2.4 KiB
Bash
Raw Permalink Normal View History

2025-02-15 01:16:26 +09:00
#!/usr/bin/env bash
set -euo pipefail
HOSTNAME='lxd2204.home.arpa'
NVME_ZFS_ASHIFT=12
NVME_ZFS_POOL_NAME='nvme'
NVME_ZFS_TARGET='/dev/vdb'
HDD_ZFS_ASHIFT=12
HDD_ZFS_POOL_NAME='hdd'
HDD_ZFS_TARGET='/dev/vdc'
BACKUP_ZFS_ASHIFT=12
BACKUP_ZFS_POOL_NAME='backup'
BACKUP_ZFS_TARGET='/dev/vdd'
hostnamectl hostname $HOSTNAME
if ! dpkg -l zfsutils-linux 2>/dev/null 1>&2 ; then
apt update && apt install -y zfsutils-linux
fi
if ! zpool list $NVME_ZFS_POOL_NAME 2>/dev/null 1>&2; then
zpool create \
-m none \
-o ashift=$NVME_ZFS_ASHIFT \
-o autotrim=on \
-o feature@lz4_compress=enabled \
-O compression=on \
-O dedup=on \
$NVME_ZFS_POOL_NAME \
$NVME_ZFS_TARGET
fi
if ! zpool list $HDD_ZFS_POOL_NAME 2>/dev/null 1>&2; then
zpool create \
-m none \
-o ashift=$HDD_ZFS_ASHIFT \
-o autotrim=on \
-o feature@lz4_compress=enabled \
-O compression=on \
$HDD_ZFS_POOL_NAME \
$HDD_ZFS_TARGET
fi
if ! zpool list $BACKUP_ZFS_POOL_NAME 2>/dev/null 1>&2; then
zpool create \
-m none \
-o ashift=$BACKUP_ZFS_ASHIFT \
-o autotrim=on \
-o feature@lz4_compress=enabled \
-O compression=on \
$BACKUP_ZFS_POOL_NAME \
$BACKUP_ZFS_TARGET
fi
cat << EOF > /tmp/lxd.yml
config: {}
networks:
- config:
ipv4.address: auto
ipv6.address: auto
description: ""
name: lxdbr0
type: ""
project: default
storage_pools:
- config:
source: nvme
description: ""
name: nvme
driver: zfs
- config:
source: hdd
description: ""
name: hdd
driver: zfs
profiles:
- config: {}
description: ""
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: nvme
type: disk
data_hdd:
path: /var/data_hdd
pool: hdd
type: disk
source: hdd
name: default
cluster: null
EOF
if ! lxc storage list $NVME_ZFS_POOL_NAME | grep 2>/dev/null 1>&2; then
lxd init --preseed < /tmp/lxd.yml
fi
# To use with lxd export, this is where lxd copy temporary file
#if ! lxc storage volume list $NVME_ZFS_POOL_NAME | grep backups >/dev/null; then
# lxc storage volume create default backups
# lxc config set storage.backups_volume default/backups
#fi
# Where to store images
if ! lxc storage volume list $NVME_ZFS_POOL_NAME | grep images >/dev/null; then
lxc storage volume create $NVME_ZFS_POOL_NAME images
lxc config set storage.images_volume $NVME_ZFS_POOL_NAME/images
fi