linux-system-roles.storage

Rôle de stockage 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

Ce rôle permet aux utilisateurs de configurer le stockage local avec un minimum d'interactions.

À l'heure actuelle, le rôle prend en charge la gestion des systèmes de fichiers et des points de montage sur

  • disques
  • groupes de volumes LVM
  • pools Stratis

Le chiffrement (avec LUKS) et le RAID (avec MD) sont également pris en charge. Le support de la gestion des dispositifs existants est limité, mais de nouveaux volumes LVM et des systèmes de fichiers Stratis peuvent être ajoutés à des configurations existantes et des points de montage, et certaines autres fonctionnalités peuvent être ajoutées à (ou supprimées de) des dispositifs existants.

Exigences

Voir ci-dessous

Exigences de collection

Le rôle nécessite des collections externes. Utilisez la commande suivante pour les installer :

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

Variables de rôle

REMARQUE : À partir de la version 1.3.0, les paramètres non spécifiés sont interprétés différemment pour les pools/volumes existants et non existants. Pour les pools et volumes nouveaux/non existants, tout paramètre omis utilisera la valeur par défaut comme décrit dans defaults/main.yml. Pour les pools et volumes existants, les paramètres omis hériteront des paramètres que le pool ou le volume a déjà. Cela signifie que pour modifier/remplacer les valeurs par défaut du rôle dans un pool ou un volume existant, vous devez spécifier explicitement les nouvelles valeurs/réglages dans les variables du rôle.

storage_pools

La variable storage_pools est une liste de pools à gérer. Chaque pool contient une liste imbriquée de dictionnaires volume comme décrit ci-dessous, ainsi que les clés suivantes :

  • name

    Cela spécifie le nom du pool à gérer/créer sous forme de chaîne. (Un exemple de pool est un groupe de volume LVM.)

  • type

    Cela spécifie le type de pool à gérer. Valeurs valides pour type : lvm, stratis.

  • state

    Les valeurs valides sont present (comportement par défaut) ou absent. Les pools marqués comme absent seront supprimés par le rôle. Les pools marqués comme present seront soit créés (si le pool avec le nom spécifié n'existe pas déjà), soit préservés.

  • grow_to_fill

    Lorsqu'il est activé, les volumes physiques du pool seront redimensionnés pour correspondre aux tailles de leurs dispositifs respectifs. (par exemple, après l'augmentation de la taille du disque de la machine virtuelle)

    Par défaut : false

    REMARQUE : Cet argument n'est valide que pour les pools LVM.

  • shared

    Si défini sur true, le rôle crée ou gère un groupe de volumes partagé. Nécessite que les services lvmlockd et dlm soient configurés et en cours d'exécution.

    Par défaut : false

    AVERTISSEMENT : Modifier la valeur shared d'un pool existant est une opération destructive. Le pool lui-même sera supprimé dans le cadre du processus.

    REMARQUE : Cet argument n'est valide que pour les pools LVM.

  • disks

    Une liste qui spécifie l'ensemble de disques à utiliser comme stockage de soutien pour le pool. Les identifiants pris en charge incluent : le nœud du dispositif (comme /dev/sda ou /dev/mapper/mpathb), le nom de base du nœud du dispositif (comme sda ou mpathb), le lien symbolique /dev/disk (comme /dev/disk/by-id/wwn-0x5000c5005bc37f3f).

    Pour les pools LVM, cela peut également être utilisé pour ajouter et retirer des disques à/from d'un pool existant. Les disques dans la liste qui ne sont pas utilisés par le pool seront ajoutés au pool. Les disques actuellement utilisés par le pool mais non présents dans la liste seront supprimés du pool seulement si storage_safe_mode est défini sur false.

  • raid_level

    Lorsqu'il est utilisé avec type : lvm, il gère un groupe de volume avec un tableau mdraid du niveau donné. Les disques d'entrée sont, dans ce cas, utilisés comme membres RAID. Valeurs acceptées : linear, raid0, raid1, raid4, raid5, raid6, raid10

  • volumes

    Il s'agit d'une liste de volumes appartenant au pool actuel. Elle suit le même modèle que la variable storage_volumes, expliquée ci-dessous.

  • encryption

    Ceci spécifie si le pool sera chiffré à l'aide de LUKS. AVERTISSEMENT : Basculer le chiffrement d'un pool est une opération destructive, ce qui signifie que le pool lui-même sera supprimé dans le cadre du processus d'ajout/suppression de la couche de chiffrement.

  • encryption_password

    Cette chaîne spécifie un mot de passe ou une phrase secrète utilisée pour déverrouiller/ouvrir le(s) volume(s) LUKS.

  • encryption_key

    Cette chaîne spécifie le chemin complet du fichier clé sur les nœuds gérés utilisé pour déverrouiller le(s) volume(s) LUKS. Il est de la responsabilité de l'utilisateur de ce rôle de copier ce fichier en toute sécurité sur les nœuds gérés, ou de s'assurer que le fichier est présent sur les nœuds gérés.

  • encryption_cipher

    Cette chaîne spécifie un chiffre non par défaut à utiliser par LUKS.

  • encryption_key_size

    Cet entier spécifie la taille de clé LUKS (en octets).

  • encryption_luks_version

    Cet entier spécifie la version de LUKS à utiliser.

  • encryption_clevis_pin

    Pour les pools Stratis, la méthode clevis qui doit être utilisée pour chiffrer le pool créé. Valeurs acceptées : tang et tpm2

  • encryption_tang_url

    Lors de la création d'un pool Stratis chiffré via NBDE à l'aide d'un serveur tang, spécifie l'URL du serveur.

  • encryption_tang_thumbprint

    Lors de la création d'un pool Stratis chiffré via NBDE à l'aide d'un serveur tang, spécifie l'empreinte du serveur.

storage_volumes

La variable storage_volumes est une liste de volumes à gérer. Chaque volume a les variables suivantes :

  • name

    Cela spécifie le nom du volume.

  • type

    Cela spécifie le type de volume sur lequel le système de fichiers résidera. Valeurs valides pour type : lvm, disk, partition ou raid. La valeur par défaut est déterminée selon le système d'exploitation et la version (actuellement lvm).

    REMARQUE : Le support pour la gestion des volumes de partition est actuellement très limité, le rôle permet de créer uniquement une seule partition s'étendant sur l'ensemble du disque.

  • state

    Les valeurs valides sont present (comportement par défaut) ou absent. Les volumes marqués comme absent seront supprimés par le rôle. Les volumes marqués comme present seront soit créés (si un volume avec le nom spécifié n'existe pas), soit préservés et éventuellement changés pour correspondre à d'autres valeurs (par exemple, si un volume avec le nom spécifié existe mais n'a pas la taille requise, il sera redimensionné si possible).

  • disks

    Cela spécifie l'ensemble de disques à utiliser comme stockage de soutien pour le système de fichiers. Cela est actuellement seulement pertinent pour les volumes de type disk, où la liste doit contenir un seul élément.

  • size

    La taille spécifie la taille du système de fichiers. Le format pour cela est destiné à être lisible par l'homme, par exemple : "10g", "50 GiB". La taille des volumes LVM peut être spécifiée en pourcentage de la taille du pool/VG, par exemple : "50 %" à partir de la version 1.4.2.

    Lors de l'utilisation de compression ou deduplication, size peut être défini plus haut que l'espace disponible réel, par exemple : 3 fois la taille du volume, en fonction de la duplicité et/ou de la compressibilité des données stockées.

    REMARQUE : La taille demandée du volume peut être réduite si nécessaire pour que le volume puisse tenir dans l'espace disponible du pool, mais seulement si la réduction requise n'est pas supérieure à 2 % de la taille demandée du volume.

  • fs_type

    Cela indique le type de système de fichiers souhaité à utiliser, par exemple : "xfs", "ext4", "swap". La valeur par défaut est déterminée par le système d'exploitation et la version (actuellement xfs pour tous les systèmes pris en charge). Utilisez "non formaté" si vous ne voulez pas que le système de fichiers soit présent. AVERTISSEMENT : Utiliser "non formaté" comme type de système de fichiers sur un système de fichiers existant est une opération destructive et détruira toutes les données sur le volume.

  • fs_label

    Le fs_label est une chaîne à utiliser pour un label de système de fichiers.

  • fs_create_options

    Les fs_create_options spécifient des arguments personnalisés à mkfs sous forme de chaîne.

  • mount_point

    Le mount_point spécifie le répertoire sur lequel le système de fichiers sera monté.

  • mount_options

    Les mount_options spécifient des options de montage personnalisées sous forme de chaîne, par exemple : 'ro'.

  • mount_user

    Le mount_user spécifie le propriétaire souhaité du répertoire de montage.

  • mount_group

    Le mount_group spécifie le groupe souhaité du répertoire de montage.

  • mount_mode

    Le mount_mode spécifie les autorisations désirées du répertoire de montage.

  • raid_level

    Spécifie le niveau RAID. Un RAID LVM peut également être créé. Un volume RAID "régulier" nécessite que le type soit raid. Un RAID LVM nécessite que le volume ait un parent storage_pools de type lvm, raid_disks doivent également être spécifiées. Valeurs acceptées :

    • pour un volume RAID LVM : raid0, raid1, raid4, raid5, raid6, raid10, striped, mirror
    • pour un volume RAID : linear, raid0, raid1, raid4, raid5, raid6, raid10

    AVERTISSEMENT : Changer le raid_level d'un volume est une opération destructive, ce qui signifie que toutes les données sur ce volume seront perdues lors du processus de retrait de l'ancien et d'ajout du nouveau RAID. La modification du RAID n'est actuellement pas prise en charge.

  • raid_device_count

    Lorsque le type est raid, spécifie le nombre de dispositifs RAID actifs.

  • raid_spare_count

    Lorsque le type est raid, spécifie le nombre de dispositifs RAID de secours.

  • raid_metadata_version

    Lorsque le type est raid, spécifie la version des métadonnées RAID sous forme de chaîne, par exemple : '1.0'.

  • raid_chunk_size

    Lorsque le type est raid, spécifie la taille des chunks RAID sous forme de chaîne, par exemple : '512 KiB'. La taille des chunks doit être un multiple de 4 Ko.

  • raid_stripe_size

    Lorsque le type est lvm, spécifie la taille des bandes RAID LVM sous forme de chaîne, par exemple : '512 KiB'.

  • raid_disks

    Spécifie quels disques doivent être utilisés pour un volume RAID LVM. raid_level doit être spécifié et le volume doit avoir un parent storage_pools de type lvm. Accepte une sous-liste des disks du parent storage_pools. En cas de plusieurs volumes RAID LVM au sein du même pool de stockage, le même disque peut être utilisé dans plusieurs raid_disks.

  • encryption

    Ceci spécifie si le volume sera chiffré à l'aide de LUKS. AVERTISSEMENT : Basculer le chiffrement d'un volume est une opération destructive, ce qui signifie que toutes les données sur ce volume seront supprimées lors du processus d'ajout/suppression de la couche de chiffrement.

  • encryption_password

    Cette chaîne spécifie un mot de passe ou une phrase secrète utilisée pour déverrouiller/ouvrir le volume LUKS.

  • encryption_key

    Cette chaîne spécifie le chemin complet du fichier clé sur les nœuds gérés utilisé pour déverrouiller le(s) volume(s) LUKS. Il est de la responsabilité de l'utilisateur de ce rôle de copier ce fichier en toute sécurité sur les nœuds gérés, ou de s'assurer que le fichier est présent sur les nœuds gérés.

  • encryption_cipher

    Cette chaîne spécifie un chiffre non par défaut à utiliser par LUKS.

  • encryption_key_size

    Cet entier spécifie la taille de clé LUKS (en bits).

  • encryption_luks_version

    Cet entier spécifie la version de LUKS à utiliser.

  • deduplication

    Ceci spécifie si l'Optimiseur de données virtuelles (VDO) sera utilisé. Lorsqu'il est défini, les données dupliquées stockées sur le volume de stockage seront dédupliquées, ce qui accroît la capacité de stockage. Peut être utilisé avec compression et vdo_pool_size. Le volume doit faire partie du storage_pool LVM. Limite un VDO storage_volume par storage_pool. Le volume sous-jacent doit avoir au moins 9 Go (la bare minimale est d'environ 5 GiB).

  • compression

    Cela spécifie si l'Optimiseur de données virtuelles (VDO) sera utilisé. Lorsque cela est activé, les données stockées sur le volume de stockage seront compressées, ce qui accroît la capacité de stockage. Le volume doit faire partie du storage_pool LVM. Peut être utilisé avec deduplication et vdo_pool_size. Limite un VDO storage_volume par storage_pool.

  • vdo_pool_size

    Lorsque l'Optimiseur de données virtuelles (VDO) est utilisé, cela spécifie la taille réelle que le volume prendra sur le dispositif. La taille virtuelle du volume VDO est définie par le paramètre size. Le format de vdo_pool_size est destiné à être lisible par l'homme, par exemple : "30g", "50GiB". La valeur par défaut est égale à la taille du volume.

  • cached

    Cela spécifie si le volume doit être mis en cache ou non. Cela est actuellement pris en charge uniquement pour les volumes LVM où dm-cache est utilisé.

  • cache_size

    Taille du cache. Le format de cache_size est destiné à être lisible par l'homme, par exemple : "30g", "50GiB".

  • cache_mode

    Mode pour le cache. Les valeurs prises en charge incluent writethrough (par défaut) et writeback.

  • cache_devices

    Liste des dispositifs qui seront utilisés pour le cache. Ce doivent être soit des volumes physiques soit des disques sur lesquels ces volumes physiques sont alloués. En général, vous voulez sélectionner des dispositifs rapides comme des disques SSD ou NVMe pour le cache.

  • thin

    Indique si le volume doit être provisionné de manière fine ou non. Cela n'est pris en charge que pour les volumes LVM.

  • thin_pool_name

    Pour les volumes thin, cela peut être utilisé pour spécifier le nom du pool mince LVM qui sera utilisé pour le volume. Si le pool avec le nom fourni existe déjà, le volume sera ajouté à ce pool. S'il n'existe pas, un nouveau pool nommé thin_pool_name sera créé. Si non spécifié :

    • s'il n'y a pas de pools minces existants, un nouveau pool mince sera créé avec un nom généré automatiquement,
    • s'il y a exactement un pool mince existant, le volume mince y sera ajouté et
    • s'il y a plusieurs pools minces présents, une exception sera levée.
  • thin_pool_size

    Taille du pool mince. Le format de thin_pool_size est destiné à être lisible par l'homme, par exemple : "30g", "50GiB".

storage_safe_mode

Lorsque vrai (par défaut), une erreur se produira au lieu de supprimer automatiquement les dispositifs existants et/ou de formater.

storage_udevadm_trigger

Lorsqu'il est vrai (par défaut est faux), le rôle utilisera udevadm trigger pour faire en sorte que les modifications udev prennent effet immédiatement. Cela peut aider sur certaines plateformes avec un udev "défectueux".

Exemple de Playbook

- name: Gérer le stockage
  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

Voir README-ostree.md

Licence

MIT

Installer
ansible-galaxy install linux-system-roles.storage
Licence
mit
Téléchargements
96.2k
Propriétaire