2021-01-30 20:11:28 +09:00
|
|
|
from pyinfra import host
|
2021-02-06 17:03:07 +09:00
|
|
|
from pyinfra.operations import server, files, systemd, apt
|
2021-01-30 20:11:28 +09:00
|
|
|
|
|
|
|
SUDO = True
|
|
|
|
|
2021-02-06 17:03:07 +09:00
|
|
|
apt.packages(
|
|
|
|
name='Install packages',
|
|
|
|
packages=['zfsutils-linux'],
|
|
|
|
update=True,
|
|
|
|
)
|
|
|
|
|
2021-01-30 20:11:28 +09:00
|
|
|
if not host.fact.command('zpool list local | grep local || true'):
|
|
|
|
server.shell(
|
|
|
|
name='Create ZFS pool',
|
2021-03-20 09:38:57 +09:00
|
|
|
commands=['zpool create -o ashift=12 -o autotrim=on -O acltype=posixacl -O canmount=off -O compression=lz4 -O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa local /dev/vdb']
|
2021-01-30 20:11:28 +09:00
|
|
|
)
|
|
|
|
|
|
|
|
files.put(
|
|
|
|
name='Upload LXD config',
|
|
|
|
src='files/lxd.yml',
|
|
|
|
dest='/tmp/lxd.yml',
|
|
|
|
mode='644',
|
|
|
|
)
|
|
|
|
|
|
|
|
if not host.fact.command('lxc storage list | grep local || true'):
|
|
|
|
server.shell(
|
|
|
|
name='Init LXD',
|
|
|
|
commands=['cat /tmp/lxd.yml | lxd init --preseed']
|
|
|
|
)
|
|
|
|
|
|
|
|
if not host.fact.command('lxc storage volume list default | grep backups || true'):
|
|
|
|
server.shell(
|
|
|
|
name='Set LXD backups volumes',
|
|
|
|
commands=['lxc storage volume create default backups', 'lxc config set storage.backups_volume default/backups']
|
|
|
|
)
|
|
|
|
|
|
|
|
if not host.fact.command('lxc storage volume list default | grep images || true'):
|
|
|
|
server.shell(
|
|
|
|
name='Set LXD images volumes',
|
|
|
|
commands=['lxc storage volume create default images', 'lxc config set storage.images_volume default/images']
|
|
|
|
)
|
|
|
|
|
2021-09-04 21:43:32 +09:00
|
|
|
files.put(
|
2021-02-06 17:03:07 +09:00
|
|
|
name='Push zfs-scrub script',
|
2021-09-04 21:43:32 +09:00
|
|
|
src='files/zfs-scrub.sh',
|
2021-02-06 17:03:07 +09:00
|
|
|
dest='/usr/local/bin/zfs-scrub.sh',
|
|
|
|
mode='700',
|
|
|
|
user='root',
|
|
|
|
group='root',
|
|
|
|
)
|
|
|
|
|
|
|
|
files.put(
|
|
|
|
name='Push zfs-scrub timer',
|
|
|
|
src='files/zfs-scrub.timer',
|
|
|
|
dest='/etc/systemd/system/zfs-scrub.timer',
|
|
|
|
user='root',
|
|
|
|
group='root',
|
|
|
|
mode='644',
|
|
|
|
)
|
|
|
|
|
|
|
|
files.put(
|
|
|
|
name='Push zfs-scrub service',
|
|
|
|
src='files/zfs-scrub.service',
|
|
|
|
dest='/etc/systemd/system/zfs-scrub.service',
|
|
|
|
user='root',
|
|
|
|
group='root',
|
|
|
|
mode='644',
|
|
|
|
)
|
|
|
|
|
|
|
|
systemd.daemon_reload(
|
|
|
|
name='Reload systemd',
|
|
|
|
user_mode=False,
|
|
|
|
)
|
|
|
|
|
|
|
|
systemd.service(
|
|
|
|
name='Enable zfs-scrub timer',
|
|
|
|
service='zfs-scrub.timer',
|
|
|
|
running=True,
|
|
|
|
enabled=True,
|
|
|
|
)
|
|
|
|
|