162 lines
4.7 KiB
YAML
162 lines
4.7 KiB
YAML
---
|
|
# file: roles/zfs/tasks/main.yml
|
|
|
|
- name: "install python_package dependencies"
|
|
block:
|
|
- name: "set fact python_package_install_from_role"
|
|
ansible.builtin.set_fact:
|
|
python_package_install_from_role:
|
|
- package: zfscos
|
|
script: zfscos
|
|
- name: "import role python_package"
|
|
ansible.builtin.import_role:
|
|
name: python_package
|
|
- name: "unset fact python_package_install"
|
|
ansible.builtin.set_fact:
|
|
python_package_install_from_role: []
|
|
tags:
|
|
- scripts
|
|
- python_package
|
|
- zfs
|
|
|
|
- name: "zfs_arc_max value"
|
|
ansible.builtin.debug:
|
|
var: max_arc_size
|
|
verbosity: 1
|
|
tags: zfs
|
|
|
|
- name: "[debian] apt install linux-headers-amd64 linux-headers-{{ ansible_kernel }}"
|
|
ansible.builtin.apt:
|
|
name:
|
|
- linux-headers-amd64
|
|
- "linux-headers-{{ ansible_kernel }}"
|
|
when: ansible_distribution == "Debian"
|
|
tags: zfs
|
|
|
|
- name: "[debian] /etc/apt/preferences.d/90_zfs"
|
|
ansible.builtin.copy:
|
|
dest: /etc/apt/preferences.d/90_zfs
|
|
content: "Package: src:zfs-linux\nPin: release n={{ ansible_distribution_release }}-backports\nPin-Priority: 990\n"
|
|
when: ansible_distribution == "Debian"
|
|
tags: zfs
|
|
|
|
- name: "[debian] apt install -t {{ ansible_distribution_release }}-backports zfs-dkms zfsutils-linux (excluding recommended packages)"
|
|
ansible.builtin.apt:
|
|
name:
|
|
- zfs-dkms
|
|
- zfsutils-linux
|
|
default_release: "{{ ansible_distribution_release }}-backports"
|
|
install_recommends: no
|
|
when: ansible_distribution == "Debian"
|
|
tags: zfs
|
|
|
|
- name: "[ubuntu] apt install zfsutils-linux, apt update if cache < 1 day"
|
|
ansible.builtin.apt:
|
|
name: zfsutils-linux
|
|
cache_valid_time: 86400
|
|
when: ansible_distribution == "Ubuntu"
|
|
tags: zfs
|
|
|
|
- name: "gather the list of installed packages to get the zfsutils-linux version"
|
|
package_facts:
|
|
tags: zfs
|
|
|
|
- name: "display the current version of zfsutils-linux"
|
|
ansible.builtin.debug:
|
|
var: ansible_facts.packages['zfsutils-linux'][0]['version']
|
|
verbosity: 1
|
|
tags: zfs
|
|
|
|
- name: "[<2.2] kernel option at /etc/modprobe.d/zfs.conf"
|
|
ansible.builtin.template:
|
|
src: zfs.conf
|
|
dest: /etc/modprobe.d/zfs.conf
|
|
notify:
|
|
- set zfs_arc_max
|
|
- set zfs_arc_meta_limit_percent
|
|
- set zfs_arc_dnode_limit_percent
|
|
register: modprobe
|
|
when: ansible_facts.packages['zfsutils-linux'][0]['version'] is version('2.2', '<')
|
|
tags: zfs
|
|
|
|
- name: "[>=2.2] kernel option at /etc/modprobe.d/zfs.conf"
|
|
ansible.builtin.template:
|
|
src: zfs.conf
|
|
dest: /etc/modprobe.d/zfs.conf
|
|
notify:
|
|
- set zfs_arc_max
|
|
- set zfs_arc_dnode_limit_percent
|
|
register: modprobe
|
|
when: ansible_facts.packages['zfsutils-linux'][0]['version'] is version('2.2', '>=')
|
|
tags: zfs
|
|
|
|
- name: "disable the default croned monthly scrub"
|
|
ansible.builtin.file:
|
|
path: /etc/cron.d/zfsutils-linux
|
|
state: absent
|
|
when: not zfs_auto_scrub
|
|
tags: zfs
|
|
|
|
- name: "modprobe zfs"
|
|
community.general.modprobe:
|
|
name: zfs
|
|
tags: zfs
|
|
|
|
- name: "echo {{ zfs_txg_timeout }} > /sys/module/zfs/parameters/zfs_txg_timeout"
|
|
ansible.builtin.shell: "echo {{ zfs_txg_timeout }} > /sys/module/zfs/parameters/zfs_txg_timeout"
|
|
when:
|
|
- zfs_txg_timeout is defined
|
|
- modprobe.changed
|
|
tags: zfs
|
|
|
|
- name: "echo {{ zfs_arc_dnode_limit_percent }} > /sys/module/zfs/parameters/zfs_arc_dnode_limit_percent"
|
|
ansible.builtin.shell: "echo {{ zfs_arc_dnode_limit_percent }} > /sys/module/zfs/parameters/zfs_arc_dnode_limit_percent"
|
|
when:
|
|
- zfs_arc_dnode_limit_percent is defined
|
|
- modprobe.changed
|
|
tags: zfs
|
|
|
|
- name: "echo {{ zfs_arc_meta_limit_percent }} > /sys/module/zfs/parameters/zfs_arc_meta_limit_percent"
|
|
ansible.builtin.shell: "echo {{ zfs_arc_meta_limit_percent }} > /sys/module/zfs/parameters/zfs_arc_meta_limit_percent"
|
|
when:
|
|
- ansible_facts.packages['zfsutils-linux'][0]['version'] is version('2.2', '<')
|
|
- zfs_arc_meta_limit_percent is defined
|
|
- modprobe.changed
|
|
tags: zfs
|
|
|
|
- name: "/usr/local/bin/clean_up_zfs_snap.py"
|
|
ansible.builtin.copy:
|
|
src: "clean_up_zfs_snap.py"
|
|
dest: "/usr/local/bin/clean_up_zfs_snap.py"
|
|
mode: 0755
|
|
tags:
|
|
- zfs
|
|
- clean-up-zfs-snap
|
|
|
|
- name: "/usr/local/bin/zfscos"
|
|
ansible.builtin.copy:
|
|
src: zfscos.sh
|
|
dest: /usr/local/bin/zfscos
|
|
mode: 0755
|
|
tags:
|
|
- zfs
|
|
- scripts
|
|
- python_package
|
|
|
|
- name: "import_tasks: zpool.yml"
|
|
ansible.builtin.import_tasks: zpool.yml
|
|
when: zfs_zpools is defined
|
|
tags:
|
|
- zfs
|
|
- zpool
|
|
|
|
- name: "make sure the requested datasets exists"
|
|
community.general.zfs:
|
|
name: "{{ item['name'] }}"
|
|
state: present
|
|
extra_zfs_properties: "{{ item['properties'] | default(omit) }}"
|
|
loop: "{{ zfs_dataset_list }}"
|
|
when: zfs_dataset_list is defined
|
|
tags:
|
|
- zfs
|
|
- dataset
|