mrlesmithjr.zfs
Tabla de Contenidos generada con DocToc
ansible-zfs
Instala y configura ZFS en Linux (http://zfsonlinux.org/)
Requisitos
Al menos un disco duro físico no usado para crear el ZFS Pool.
Vagrant
Levanta un entorno de prueba usando Vagrant.
vagrant up
Esto levantará un servidor con algunos volúmenes ZFS, incluyendo dispositivos iSCSI. Puedes ver/utilizar los volúmenes iSCSI desde el nodo cliente.
vagrant ssh client
sudo iscsiadm -m discovery -t st -p 192.168.202.201
sudo iscsiadm -m node --login
Ahora deberías tener /dev/sdb y /dev/sdc en tu cliente para formatear y montar.
sudo fdisk -l
Disco /dev/sdb: 1073 MB, 1073741824 bytes
34 cabezales, 61 sectores/pista, 1011 cilindros, total 2097152 sectores
Unidades = sectores de 1 * 512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de I/O (mínimo/óptimo): 512 bytes / 512 bytes
Identificador del disco: 0x00000000
El disco /dev/sdb no contiene una tabla de particiones válida.
Disco /dev/sdc: 2147 MB, 2147483648 bytes
67 cabezales, 62 sectores/pista, 1009 cilindros, total 4194304 sectores
Unidades = sectores de 1 * 512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de I/O (mínimo/óptimo): 512 bytes / 512 bytes
Identificador del disco: 0x00000000
El disco /dev/sdc no contiene una tabla de particiones válida.
vagrant@client:~$ sudo fdisk /dev/sdb
El dispositivo no contiene una tabla de particiones válida de DOS, ni una etiqueta de disco de Sun, SGI o OSF.
Construyendo una nueva etiqueta de disco DOS con identificador de disco 0xa1af287f.
Los cambios permanecerán en memoria hasta que decidas escribirlos.
Después de eso, por supuesto, el contenido anterior no se podrá recuperar.
Variables de Rol
---
# archivo de valores predeterminados para ansible-zfs
# Define si se crean sistemas de archivos ZFS
zfs_create_filesystems: false
# Define si se crean pools ZFS
zfs_create_pools: false
# Define si se crean volúmenes ZFS
zfs_create_volumes: false
zfs_debian_package_key: http://zfsonlinux.org/4D5843EA.asc
zfs_debian_package_url: http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux
zfs_debian_package_version: 6
zfs_debian_package: "zfsonlinux_{{ zfs_debian_package_version }}_all.deb"
zfs_enable_auto_snapshots: true
# Define si se instala iscsitarget para servir volúmenes iSCSI
zfs_enable_iscsi: false
# Define si se debe instalar el servidor NFS para servir NFS
zfs_enable_nfs: false
# Define si se aplican los parámetros establecidos en zfs_performance_tuning
zfs_enable_performance_tuning: false
# Define si Samba está instalado y configurado
zfs_enable_samba: false
# Define si las claves para sistemas de archivos encriptados se cargan al arrancar
zfs_autoload_encryption_keys: false
# Define sistemas de archivos a gestionar
zfs_filesystems: []
# - name: nfs
# pool: tank
# atime: off
# compression: lz4
# logbias: latency
# primarycache: all
# quota: 3G
# recordsize: 16K
# sharenfs: on
# snapdev: visible
# snapdir: visible
# state: present
# - name: Shares/Movies
# compression: lz4
# group: nogroup
# mountpoint: /TANK/Shares/Movies
# owner: nobody
# pool: TANK
# quota: none
# sharesmb: true
# smb_options:
# browseable: "yes"
# comment: ""
# create_directory_mask: "0755"
# create_mask: "0777"
# guest_ok: "yes"
# read_only: "no"
# share_name: Movies
# writable: "yes"
# xattr: sa
# acltype: posixacl
# state: present
# sync: disabled
# - name: encrypted-fs
# pool: tank
# state: present
# encryption: aes-256-gcm
# keylocation: "file:///use/local/etc/zfs/keys/tank/encyrpted-fs"
# keyformat: "hex"
# Define si este rol debe gestionar la instalación de ZFS, incluyendo actualizaciones.
zfs_install_update: true
# Define si el servicio iscsitarget está habilitado
zfs_iscsistarget_enable: "{{ zfs_enable_iscsi }}"
# Define tu FQDN en reversa...(local.vagrant)
zfs_iscsistarget_iqn: iqn.2001-04.org.example
zfs_iscsistarget_max_sleep: 3
zfs_iscsistarget_options: ""
zfs_iscsitarget_target_portals:
# Define la dirección IP para escuchar conexiones iSCSI | ALL (por defecto) | cidr (x.x.x.x/xx) | deshabilitar ALL si se define cidr
- ALL
# - 10.0.2.0/24
# - 192.168.2.0/24
# Define si se gestionan los permisos del punto de montaje del sistema de archivos ZFS
zfs_manage_filesystem_permissions: false
zfs_performance_tuning:
- param: zfs_prefetch_disable
value: 1
- param: zfs_txg_timeout
value: 5
- param: zfs_arc_max
value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.5) | round | int }}"
- param: zfs_arc_meta_limit
value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.125) | round | int }}"
- param: zfs_arc_min
value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.0625) | round | int }}"
# Define los zpool(s) a gestionar
zfs_pools: []
# - name: SSD-TANK
# action: create
# options:
# ashift: 13
# compression: lz4
# devices:
# - ata-INTEL_SSDSC2BW240A4_CVDA352100YL2403GN
# - ata-INTEL_SSDSC2BW240A4_BTDA329505KM2403GN
# type: mirror
# state: present
# define patrones de cron de scrub globales. Solo se aplica cuando `zfs_enable_monitoring` está configurado en True.
zfs_pools_scrub_cron:
minute: 0
hour: 0
day: *
month: *
weekday: sun
zfs_ubuntu_ppa: ppa:zfs-native/stable
# Define volúmenes de dispositivo bloque a gestionar
zfs_volumes: []
# - name: backups
# pool: tank
# shareiscsi: on
# volsize: 1G
# lun: 0
# allow:
# - ALL
# state: present
zfs_enable_monitoring: False
# en porcentaje.
zfs_monitoring_capacity_threshold: 80
# en días.
zfs_monitoring_scrub_max_age: 8
zfs_monitoring_email_dest: root@localhost
Dependencias
Ninguna
Ejemplo de Playbook
GitHub
---
- name: Instala ZFS en Linux
hosts: all
become: true
vars:
- zfs_iscsistarget_iqn: iqn.2001-04.local.vagrant # define tu FQDN en reversa...(local.vagrant)
- zfs_iscsistarget_target_portals:
- 192.168.202.0/24
- zfs_enable_iscsi: true
- zfs_enable_nfs: true
roles:
- role: ansible-zfs
tasks:
```yaml
#### Galaxy
```yaml
---
- name: Instala ZFS en Linux
hosts: all
become: true
vars:
- zfs_iscsistarget_iqn: iqn.2001-04.local.vagrant # define tu FQDN en reversa...(local.vagrant)
- zfs_iscsistarget_target_portals:
- 192.168.202.0/24
- zfs_enable_iscsi: true
- zfs_enable_nfs: true
roles:
- role: mrlesmithjr.zfs
tasks:
Ejemplo Avanzado Creación de ZPool
zfs_pools: # define los zpool(s) a gestionar
- name: 'SSD-TANK'
action: 'create'
options: # establecer opciones permanentes en el momento de la creación
ashift: 13
compression: 'lz4'
devices: # define los dispositivos para crear el pool...puedes definir múltiples por | sdb sdc sdd sde sdf | todo en una línea con espacios
- 'ata-INTEL_SSDSC2BW240A4_CVDA352100YL2403GN'
- 'ata-INTEL_SSDSC2BW240A4_BTDA329505KM2403GN'
type: 'raidz2' # define el tipo de pool... | básico (sin raid) | mirror | raidz | raidz2 | raidz3
state: 'present'
- name: 'SSD-TANK'
action: 'add'
compression: 'lz4'
devices:
- 'ata-INTEL_SSDSC2BW240A4_BTDA3300022F2403GN'
type: 'spare'
state: 'present'
- name: 'TANK'
action: 'create'
compression: 'lz4'
devices:
- 'ata-ST2000VN000-1HJ164_W522KVAS'
- 'ata-ST2000VN000-1HJ164_W522KW2J'
type: 'mirror'
state: 'present'
- name: 'TANK'
action: 'add'
compression: 'lz4'
devices:
- 'ata-ST2000DM001-1CH164_Z1E957EP'
- 'ata-ST2000DM001-1ER164_W4Z08B5M'
type: 'mirror'
state: 'present'
- name: 'TANK'
action: 'add'
compression: 'lz4'
devices:
- 'ata-ST2000DM001-1ER164_W4Z08FPX'
- 'ata-ST2000DM001-1ER164_W5009JQ4'
type: 'mirror'
state: 'present'
- name: 'TANK'
action: 'add'
compression: 'lz4'
devices:
- 'ata-ST2000DM001-1CH164_W1E3XCBV'
- 'ata-ST2000DM001-1CH164_W1E3V7VA'
type: 'mirror'
state: 'present'
- name: 'TANK'
action: 'add'
compression: 'lz4'
devices:
- 'ata-ST2000DM001-1CH164_W1E3XCBV'
- 'ata-ST2000DM001-1CH164_W1E3V7VA'
type: 'mirror'
state: 'present'
- name: 'TANK'
action: 'add'
compression: 'lz4'
devices:
- 'ata-INTEL_SSDSC2CW120A3_CVCV248102U3120BGN'
type: 'cache'
state: 'present'
- name: 'TANK'
action: 'add'
compression: 'lz4'
devices:
- 'ata-INTEL_SSDSC2CW120A3_CVCV2515011Y120BGN'
type: 'cache'
state: 'present'
- name: 'TANK'
action: 'add'
compression: 'lz4'
devices:
- 'ata-ST2000DL003-9VT166_5YD48V54'
type: 'spare'
state: 'present'
Licencia
BSD
Información del Autor
Larry Smith Jr.
- @mrlesmithjr
- http://everythingshouldbevirtual.com
- mrlesmithjr [at] gmail.com
Instalar
ansible-galaxy install mrlesmithjr.zfsLicencia
mit
Descargas
513.1k
Propietario
Sharing practical insights on virtualization, cloud, automation, and DevOps to help others build, automate, and innovate with confidence.
