linux-system-roles.storage

Rol de Almacenamiento en Linux

ansible-lint.yml ansible-test.yml codeql.yml markdownlint.yml python-unit-test.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml

Este rol permite a los usuarios configurar el almacenamiento local con un mínimo de entrada.

Actualmente, el rol soporta la gestión de sistemas de archivos y entradas de montaje en:

  • discos
  • grupos de volúmenes LVM
  • grupos de Stratis

También se soporta la encriptación (usando LUKS) y RAID (usando MD). El soporte para gestionar dispositivos preexistentes es limitado, pero se pueden agregar nuevos volúmenes LVM y sistemas de archivos Stratis a configuraciones y puntos de montaje existentes, y se pueden agregar algunas otras funciones a (o quitar de) dispositivos existentes.

Requisitos

Ver abajo.

Requisitos de colección

El rol requiere colecciones externas. Usa el siguiente comando para instalarlas:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

Variables del Rol

NOTA: A partir de la versión 1.3.0, los parámetros no especificados se interpretan de manera diferente para grupos/volúmenes existentes y no existentes. Para grupos y volúmenes nuevos/no existentes, cualquier parámetro omitido usará el valor por defecto descrito en defaults/main.yml. Para grupos y volúmenes existentes, los parámetros omitidos heredarán cualquiera de los ajustes que ya tenga el grupo o volumen. Esto significa que para cambiar/sustituir los valores por defecto del rol en un grupo o volumen existente, debes especificar explícitamente los nuevos valores/configuraciones en las variables del rol.

storage_pools

La variable storage_pools es una lista de grupos a gestionar. Cada grupo contiene una lista simplificada de diccionarios volume como se describe a continuación, así como las siguientes claves:

  • name

    Especifica el nombre del grupo a gestionar/crear como una cadena. (Un ejemplo de un grupo es un grupo de volúmenes LVM).

  • type

    Especifica el tipo de grupo a gestionar. Valores válidos para type: lvm, stratis.

  • state

    Los valores válidos son present (comportamiento por defecto) o absent. Los grupos marcados como absent serán eliminados por el rol. Los grupos marcados como present serán creados (si el grupo con el nombre especificado no existe) o preservados.

  • grow_to_fill

    Cuando se establece, los Volúmenes Físicos del grupo se cambiarán de tamaño para coincidir con los tamaños de sus respectivos dispositivos.
    (por ejemplo, después del aumento del tamaño del disco de una Máquina Virtual).

    Por defecto: false

    NOTA: Este argumento es válido solo para grupos LVM.

  • shared

    Si se establece en true, el rol crea o gestiona un grupo de volúmenes compartido. Requiere que los servicios lvmlockd y dlm estén configurados y funcionando.

    Por defecto: false

    ADVERTENCIA: Modificar el valor shared en un grupo existente es una operación destructiva. El grupo en sí será eliminado como parte del proceso.

    NOTA: Este argumento es válido solo para grupos LVM.

  • disks

    Una lista que especifica el conjunto de discos a usar como almacenamiento de respaldo para el grupo. Los identificadores soportados incluyen: nodo de dispositivo (como /dev/sda o /dev/mapper/mpathb), nombre base del nodo de dispositivo (como sda o mpathb), y symlink de /dev/disk (como /dev/disk/by-id/wwn-0x5000c5005bc37f3f).

    Para grupos LVM esto también se puede usar para agregar y quitar discos a/de un grupo existente. Los discos en la lista que no están usados por el grupo serán añadidos al grupo. Los discos que actualmente son usados por el grupo pero no están presentes en la lista serán eliminados del grupo solo si storage_safe_mode está configurado en false.

  • raid_level

    Cuando se usa con type: lvm gestiona un grupo de volúmenes con un arreglo mdraid del nivel dado en él. Los discos de entrada se usan en este caso como miembros de RAID. Los valores aceptados son: linear, raid0, raid1, raid4, raid5, raid6, raid10.

  • volumes

    Esta es una lista de volúmenes que pertenecen al grupo actual. Sigue el mismo patrón que la variable storage_volumes, que se explica a continuación.

  • encryption

    Especifica si el grupo será encriptado usando LUKS. ADVERTENCIA: Cambiar la encriptación para un grupo es una operación destructiva, lo que significa que el grupo en sí será eliminado como parte del proceso de agregar/quitar la capa de encriptación.

  • encryption_password

    Esta cadena especifica una contraseña o frase de paso utilizada para desbloquear/abrir el volumen LUKS.

  • encryption_key

    Esta cadena especifica la ruta completa al archivo clave en los nodos gestionados que se usará para desbloquear los volúmenes LUKS. Es responsabilidad del usuario de este rol copiar de manera segura este archivo a los nodos gestionados o asegurar de otra manera que el archivo esté en los nodos gestionados.

  • encryption_cipher

    Esta cadena especifica un cifrado no por defecto que se usará por LUKS.

  • encryption_key_size

    Este entero especifica el tamaño de la clave LUKS (en bytes).

  • encryption_luks_version

    Este entero especifica la versión de LUKS a usar.

  • encryption_clevis_pin

    Para grupos Stratis, el método clevis que debe usarse para encriptar el grupo creado. Valores aceptados son: tang y tpm2.

  • encryption_tang_url

    Al crear un grupo Stratis encriptado a través de NBDE usando un servidor tang, especifica la URL del servidor.

  • encryption_tang_thumbprint

    Al crear un grupo Stratis encriptado a través de NBDE usando un servidor tang, especifica la huella digital del servidor.

storage_volumes

La variable storage_volumes es una lista de volúmenes a gestionar. Cada volumen tiene las siguientes variables:

  • name

    Especifica el nombre del volumen.

  • type

    Especifica el tipo de volumen sobre el cual residirá el sistema de archivos. Valores válidos para type: lvm, disk, partition o raid. El valor por defecto se determina según el sistema operativo y la versión (actualmente lvm).

    NOTA: El soporte para gestionar volúmenes de partición es actualmente muy limitado, el rol permite crear solo una única partición que abarque todo el disco.

  • state

    Los valores válidos son present (comportamiento por defecto) o absent. Los volúmenes marcados como absent serán eliminados por el rol. Los volúmenes marcados como present serán creados (si un volumen con el nombre especificado no existe) o preservados y posiblemente cambiados para coincidir con otros valores (por ejemplo, si un volumen con el nombre especificado existe pero no tiene el size requerido, se cambiará de tamaño si es posible).

  • disks

    Especifica el conjunto de discos a usar como almacenamiento de respaldo para el sistema de archivos. Esto es actualmente solo relevante para volúmenes de tipo disk, donde la lista debe contener solo un solo ítem.

  • size

    El size especifica el tamaño del sistema de archivos. El formato para esto está destinado a ser legible para humanos, por ejemplo: "10g", "50 GiB". El tamaño de los volúmenes LVM puede ser especificado como un porcentaje del tamaño del grupo/VG, por ejemplo: "50%" a partir de v1.4.2.

    Al usar compression o deduplication, el size puede ser establecido más alto que el espacio disponible real, por ejemplo: 3 veces el tamaño del volumen, basado en la duplicación y/o compresibilidad de los datos almacenados.

    NOTA: El tamaño solicitado del volumen puede ser reducido según sea necesario para que el volumen quepa en el espacio disponible del grupo, pero solo si la reducción requerida no es más del 2% del tamaño solicitado del volumen.

  • fs_type

    Indica el tipo de sistema de archivos deseado a usar, por ejemplo: "xfs", "ext4", "swap". El valor por defecto se determina según el sistema operativo y la versión (actualmente xfs para todos los sistemas soportados). Usa "unformatted" si no deseas que el sistema de archivos esté presente. ADVERTENCIA: Usar "unformatted" como tipo de sistema de archivos en un sistema de archivos existente es una operación destructiva y destruirá todos los datos en el volumen.

  • fs_label

    El fs_label es una cadena que se usará para una etiqueta de sistema de archivos.

  • fs_create_options

    El fs_create_options especifica argumentos personalizados para mkfs como una cadena.

  • mount_point

    El mount_point especifica el directorio en el cual se montará el sistema de archivos.

  • mount_options

    El mount_options especifica opciones de montaje personalizadas como una cadena, por ejemplo: 'ro'.

  • mount_user

    El mount_user especifica el propietario deseado del directorio de montaje.

  • mount_group

    El mount_group especifica el grupo deseado del directorio de montaje.

  • mount_mode

    El mount_mode especifica los permisos deseados del directorio de montaje.

  • raid_level

    Especifica el nivel de RAID. También se puede crear RAID LVM. Un volumen RAID "normal" requiere que el tipo sea raid. RAID LVM necesita que el volumen tenga un padre de storage_pools con tipo lvm, también se deben especificar raid_disks. Valores aceptados son:

    • para volumen RAID LVM: raid0, raid1, raid4, raid5, raid6, raid10, striped, mirror.
    • para volumen RAID: linear, raid0, raid1, raid4, raid5, raid6, raid10.

    ADVERTENCIA: Cambiar raid_level para un volumen es una operación destructiva, lo que significa que todos los datos en ese volumen se perderán como parte del proceso de eliminar el RAID antiguo y agregar uno nuevo. El cambio de forma de RAID no se soporta actualmente.

  • raid_device_count

    Cuando el tipo es raid especifica el número de dispositivos RAID activos.

  • raid_spare_count

    Cuando el tipo es raid especifica el número de dispositivos RAID de repuesto.

  • raid_metadata_version

    Cuando el tipo es raid especifica la versión de los metadatos de RAID como una cadena, por ejemplo: '1.0'.

  • raid_chunk_size

    Cuando el tipo es raid especifica el tamaño del fragmento de RAID como una cadena, por ejemplo: '512 KiB'. El tamaño del fragmento debe ser un múltiplo de 4 KiB.

  • raid_stripe_size

    Cuando el tipo es lvm especifica el tamaño de la franja RAID LVM como una cadena, por ejemplo: '512 KiB'.

  • raid_disks

    Especifica qué discos deben ser usados para el volumen RAID LVM. El raid_level necesita ser especificado y el volumen debe tener un padre de storage_pools con tipo lvm. Acepta una sublista de disks del padre storage_pools. En caso de múltiples volúmenes RAID LVM dentro del mismo grupo de almacenamiento, se puede usar el mismo disco en múltiples raid_disks.

  • encryption

    Especifica si el volumen será encriptado usando LUKS. ADVERTENCIA: Cambiar la encriptación para un volumen es una operación destructiva, lo que significa que todos los datos en ese volumen serán eliminados como parte del proceso de agregar/quitar la capa de encriptación.

  • encryption_password

    Esta cadena especifica una contraseña o frase de paso utilizada para desbloquear/abrir el volumen LUKS.

  • encryption_key

    Esta cadena especifica la ruta completa al archivo clave en los nodos gestionados que se usará para desbloquear los volúmenes LUKS. Es responsabilidad del usuario de este rol copiar de manera segura este archivo a los nodos gestionados o asegurar de otra manera que el archivo esté en los nodos gestionados.

  • encryption_cipher

    Esta cadena especifica un cifrado no por defecto que se usará por LUKS.

  • encryption_key_size

    Este entero especifica el tamaño de la clave LUKS (en bits).

  • encryption_luks_version

    Este entero especifica la versión de LUKS a usar.

  • deduplication

    Especifica si se usará el Virtual Data Optimizer (VDO). Cuando se establece, los datos duplicados almacenados en el volumen de almacenamiento serán deduplicados, lo que resulta en más capacidad de almacenamiento. Puede usarse junto con compression y vdo_pool_size. El volumen debe ser parte de storage_pool LVM. Límite de un storage_volume VDO por storage_pool. El volumen subyacente debe tener al menos 9 GB (el mínimo bare es alrededor de 5 GiB).

  • compression

    Especifica si se usará el Virtual Data Optimizer (VDO). Cuando se establece, los datos almacenados en el volumen serán comprimidos, lo que resultará en más capacidad de almacenamiento. El volumen debe ser parte de storage_pool LVM. Puede usarse junto con deduplication y vdo_pool_size. Límite de un storage_volume VDO por storage_pool.

  • vdo_pool_size

    Cuando se usa el Virtual Data Optimizer (VDO), especifica el tamaño real que el volumen ocupará en el dispositivo. El tamaño virtual del volumen VDO se establece con el parámetro size. El formato vdo_pool_size está destinado a ser legible para humanos, por ejemplo: "30g", "50GiB". El valor por defecto es igual al tamaño del volumen.

  • cached

    Especifica si el volumen debe ser almacenado en caché o no. Esto actualmente es soportado solo para volúmenes LVM donde se utiliza dm-cache.

  • cache_size

    Tamaño de la caché. El formato cache_size está destinado a ser legible para humanos, por ejemplo: "30g", "50GiB".

  • cache_mode

    Modo para la caché. Los valores soportados incluyen writethrough (por defecto) y writeback.

  • cache_devices

    Lista de dispositivos que serán utilizados para la caché. Estos deberían ser volúmenes físicos o discos en los que se asignan esos volúmenes físicos. Generalmente deseas seleccionar dispositivos rápidos como SSD o discos NVMe para la caché.

  • thin

    Especifica si el volumen debe ser aprovisionado de manera delgada o no. Esto es soportado solo para volúmenes LVM.

  • thin_pool_name

    Para volúmenes thin, esto se puede usar para especificar el nombre del grupo LVM delgado que se usará para el volumen. Si el grupo con el nombre proporcionado ya existe, el volumen se añadirá a ese grupo. Si no existe, se creará un nuevo grupo llamado thin_pool_name. Si no se especifica:

    • si no hay grupos delgados existentes, se creará un nuevo grupo delgado con un nombre generado automáticamente,
    • si hay exactamente un grupo delgado existente, el volumen delgado se añadirá a él, y
    • si hay múltiples grupos delgados presentes, se generará una excepción.
  • thin_pool_size

    Tamaño para el grupo delgado. El formato thin_pool_size está destinado a ser legible para humanos, por ejemplo: "30g", "50GiB".

storage_safe_mode

Cuando es verdadero (el valor por defecto), ocurrirá un error en lugar de eliminar automáticamente dispositivos existentes y/o formatear.

storage_udevadm_trigger

Cuando es verdadero (el valor por defecto es falso), el rol utilizará el desencadenador udevadm para hacer que los cambios udev surtan efecto de inmediato. Esto puede ayudar en algunas plataformas con udev "defectuoso".

Ejemplo de Playbook

- name: Gestionar almacenamiento
  hosts: all
  roles:
    - name: linux-system-roles.storage
      storage_pools:
        - name: app
          disks:
            - sdb
            - sdc
          volumes:
            - name: shared
              size: "100 GiB"
              mount_point: "/mnt/app/shared"
              #fs_type: xfs
              state: present
            - name: users
              size: "400g"
              fs_type: ext4
              mount_point: "/mnt/app/users"
      storage_volumes:
        - name: images
          type: disk
          disks: ["mpathc"]
          mount_point: /opt/images
          fs_label: images

rpm-ostree

Ver README-ostree.md

Licencia

MIT

Instalar
ansible-galaxy install linux-system-roles.storage
Licencia
mit
Descargas
96.2k
Propietario