storage

Роль хранения в 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

Эта роль позволяет пользователям настраивать локальное хранилище с минимальным вводом данных.

На данный момент роль поддерживает управление файловыми системами и точками монтирования на:

  • дисках
  • группах объемов LVM
  • пулах Stratis

Также поддерживается шифрование (с использованием LUKS) и RAID (с использованием MD). Поддержка управления существующими устройствами ограничена, но новые объемы LVM и файловые системы Stratis могут быть добавлены в существующие настройки и точки монтирования, а некоторые другие функции могут быть добавлены в (или удалены из) существующих устройствах.

Требования

Смотрите ниже

Требования по коллекции

Роль требует внешние коллекции. Используйте следующую команду для их установки:

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

Переменные роли

ПРИМЕЧАНИЕ: Начиная с версии 1.3.0, неуказанные параметры интерпретируются по-разному для существующих и несуществующих пулов/объемов. Для новых/несуществующих пулов и объемов любые пропущенные параметры будут использовать значение по умолчанию, как описано в defaults/main.yml. Для существующих пулов и объемов пропущенные параметры унаследуют уже имеющиеся настройки. Это означает, что для изменения/замены значений по умолчанию роли в существующем пуле или объеме вы должны явно указать новые значения/настройки в переменных роли.

storage_pools

Переменная storage_pools представляет собой список пулов для управления. Каждый пул содержит вложенный список словарей volume, как описано ниже, а также следующие ключи:

  • name

    Это указывает имя пула для управления/создания в виде строки. (Пример пула - группа объемов LVM.)

  • type

    Это указывает тип пула для управления. Доступные значения для type: lvm, stratis.

  • state

    Доступные значения: present (поведение по умолчанию) или absent. Пулы, помеченные как absent, будут удалены ролью. Пулы, помеченные как present, будут либо созданы (если пул с указанным name еще не существует), либо сохранены.

  • grow_to_fill

    При установленном значении физические объёмы пула будут изменены для соответствия размерам их устройств. (например, после увеличения размера диска виртуальной машины)

    По умолчанию: false

    ПРИМЕЧАНИЕ: Этот аргумент применим только для LVM пулов.

  • shared

    Если установлено в true, роль создаёт или управляет общим объемом. Требуется настройка и запуск служб lvmlockd и dlm.

    По умолчанию: false

    ПРЕДУПРЕЖДЕНИЕ: Изменение значения shared для существующего пула является разрушительной операцией. Сам пул будет удалён в рамках этого процесса.

    ПРИМЕЧАНИЕ: Этот аргумент применим только для LVM пулов.

  • disks

    Список, который определяет набор дисков, используемых в качестве дискового пространства для пула. Поддерживаются идентификаторы: узел устройства (например, /dev/sda или /dev/mapper/mpathb), базовое имя узла устройства (например, sda или mpathb), символическая ссылка /dev/disk (например, /dev/disk/by-id/wwn-0x5000c5005bc37f3f).

    Для LVM пулов это также может быть использовано для добавления и удаления дисков в/из существующего пула. Диски в списке, которые не используются пулом, будут добавлены в пул. Диски, которые в данный момент используются пулом, но отсутствуют в списке, будут удалены из пула только если storage_safe_mode установлен в false.

  • raid_level

    При использовании с type: lvm управляет группой объемов с массивом mdraid заданного уровня на ней. Входные disks в данном случае используются в качестве участников RAID. Принятые значения: linear, raid0, raid1, raid4, raid5, raid6, raid10.

  • volumes

    Это список объемов, принадлежащих текущему пулу. Он следует тому же шаблону, что и переменная storage_volumes, описанная ниже.

  • encryption

    Это указывает, будет ли пул зашифрован с использованием LUKS.
    ПРЕДУПРЕЖДЕНИЕ: Переключение шифрования для пула является разрушительной операцией, то есть пул будет удалён в рамках процесса добавления/удаления уровня шифрования.

  • encryption_password

    Эта строка указывает пароль или фразу для разблокировки/открытия объемов LUKS.

  • encryption_key

    Эта строка указывает полный путь к ключевому файлу на управляемых узлах, используемому для разблокировки объемов LUKS. Пользователь этой роли должен надежно скопировать этот файл на управляемые узлы или убедиться, что файл находится на управляемых узлах.

  • encryption_cipher

    Эта строка указывает не стандартный шифр, который будет использоваться LUKS.

  • encryption_key_size

    Этот целое число указывает размер ключа LUKS (в байтах).

  • encryption_luks_version

    Этот целое число указывает версию LUKS для использования.

  • encryption_clevis_pin

    Для пулов Stratis метод clevis, который должен быть использован для шифрования созданного пула. Принятые значения: tang и tpm2.

  • encryption_tang_url

    При создании пула Stratis, зашифрованного через NBDE, указывает URL сервера.

  • encryption_tang_thumbprint

    При создании пула Stratis, зашифрованного через NBDE, указывает отпечаток сервера.

storage_volumes

Переменная storage_volumes представляет собой список объемов для управления. Каждый объем имеет следующие переменные:

  • name

    Это указывает имя объема.

  • type

    Это указывает тип объема, на котором будет располагаться файловая система. Действительные значения для type: lvm, disk, partition или raid. Значение по умолчанию определяется в зависимости от ОС и версии (в данный момент lvm).

    ПРИМЕЧАНИЕ: Поддержка управления объемами разделов в настоящее время очень ограничена, роль позволяет создавать только один раздел, охватывающий весь диск.

  • state

    Доступные значения: present (поведение по умолчанию) или absent. Объемы, помеченные как absent, будут удалены ролью. Объемы, помеченные как present, будут либо созданы (если объем с указанным name не существует), либо сохранены и, возможно, изменены, чтобы соответствовать другим значениям (например, если объем с указанным name существует, но не имеет требуемого size, он будет изменён по размеру, если это возможно).

  • disks

    Это указывает набор дисков, которые будут использоваться для обеспечения файловой системы. Это в настоящее время актуально только для объемов типа disk, где в списке должно быть только одно значение.

  • size

    size указывает размер файловой системы. Формат этого значения предназначен для удобства восприятия человеком, например: "10g", "50 GiB". Размеры LVM объемов можно указывать как процент от размера пула/VG, например: "50%" с версии v1.4.2.

    При использовании compression или deduplication, size может быть установлен выше фактического доступного места, например: в 3 раза больше размера объема, основываясь на дублируемости и/или сжимаемости хранимых данных.

    ПРИМЕЧАНИЕ: Запрашиваемый размер объема может быть уменьшен по мере необходимости, чтобы объем мог поместиться в доступном пространстве пула, но только если требуемое уменьшение не превышает 2% от запрашиваемого размера объема.

  • fs_type

    Это указывает желаемый тип файловой системы для использования, например: "xfs", "ext4", "swap". Значение по умолчанию определяется в зависимости от ОС и версии (в данный момент xfs для всех поддерживаемых систем). Используйте "unformatted", если вы не хотите, чтобы файловая система присутствовала. ПРЕДУПРЕЖДЕНИЕ: Использование типа файловой системы "unformatted" на существующей файловой системе является разрушительной операцией и уничтожит все данные на объеме.

  • fs_label

    fs_label это строка для использования в качестве метки файловой системы.

  • fs_create_options

    fs_create_options указывает кастомные аргументы для mkfs в виде строки.

  • mount_point

    mount_point указывает директорию, на которой будет смонтирована файловая система.

  • mount_options

    mount_options указывает кастомные параметры монтирования в виде строки, например: 'ro'.

  • mount_user

    mount_user указывает желаемого владельца директории монтирования.

  • mount_group

    mount_group указывает желаемую группу директории монтирования.

  • mount_mode

    mount_mode указывает желаемые права доступа для директории монтирования.

  • raid_level

    Указывает уровень RAID. LVM RAID также может быть создан. "Обычный" объем RAID требует, чтобы тип был raid. LVM RAID требует, чтобы объем имел родитель storage_pools с типом lvm, также необходимо указать raid_disks. Принятые значения:

    • для LVM RAID объема: raid0, raid1, raid4, raid5, raid6, raid10, striped, mirror
    • для RAID объема: linear, raid0, raid1, raid4, raid5, raid6, raid10

    ПРЕДУПРЕЖДЕНИЕ: Изменение raid_level для объема является разрушительной операцией, то есть все данные на этом объеме будут потеряны в процессе удаления старого и добавления нового RAID. Переформирование RAID в настоящее время не поддерживается.

  • raid_device_count

    Когда тип равен raid, указывает количество активных RAID устройств.

  • raid_spare_count

    Когда тип равен raid, указывает количество резервных RAID устройств.

  • raid_metadata_version

    Когда тип равен raid, указывает версию метаданных RAID в виде строки, например: '1.0'.

  • raid_chunk_size

    Когда тип равен raid, указывает размер блока RAID в виде строки, например: '512 KiB'. Размер блока должен быть кратен 4 KiB.

  • raid_stripe_size

    Когда тип равен lvm, указывает размер полосы LVM RAID в виде строки, например: '512 KiB'.

  • raid_disks

    Указывает, какие диски должны быть использованы для объема LVM RAID. необходимо указать raid_level, и объем должен иметь родитель storage_pools с типом lvm. Принимает подсписок disks родительского storage_pools. В случае нескольких LVM RAID объемов в одном и том же пуле хранилища, один и тот же диск может использоваться в нескольких raid_disks.

  • encryption

    Это указывает, будет ли объем зашифрован с использованием LUKS.
    ПРЕДУПРЕЖДЕНИЕ: Переключение шифрования для объема является разрушительной операцией, то есть все данные на этом объеме будут удалены в рамках процесса добавления/удаления уровня шифрования.

  • encryption_password

    Эта строка указывает пароль или фразу для разблокировки/открытия объемов LUKS.

  • encryption_key

    Эта строка указывает полный путь к ключевому файлу на управляемых узлах, используемому для разблокировки объемов LUKS. Пользователь этой роли должен надежно скопировать этот файл на управляемые узлы или убедиться, что файл находится на управляемых узлах.

  • encryption_cipher

    Эта строка указывает не стандартный шифр, который будет использоваться LUKS.

  • encryption_key_size

    Этот целое число указывает размер ключа LUKS (в битах).

  • encryption_luks_version

    Этот целое число указывает версию LUKS для использования.

  • deduplication

    Это указывает, будет ли использоваться Оптимизатор Виртуальных Данных (VDO). При установленном значении дублированные данные, хранящиеся на объемах, будут дедуплицированы, что приведет к увеличению места на диске. Может использоваться вместе с compression и vdo_pool_size. Объем должен быть частью LVM storage_pool. Не более одного VDO storage_volume на storage_pool. Основной объем должен иметь объем не менее 9 ГБ (минимум около 5 GiB).

  • compression

    Это указывает, будет ли использоваться Оптимизатор Виртуальных Данных (VDO). При установленном значении данные, сохраняемые на объемах, будут сжаты, что приведет к увеличению места на диске. Объем должен быть частью LVM storage_pool. Может использоваться вместе с deduplication и vdo_pool_size. Не более одного VDO storage_volume на storage_pool.

  • vdo_pool_size

    Когда используется Оптимизатор Виртуальных Данных (VDO), это указывает фактический размер, который объем займет на устройстве. Виртуальный размер VDO объема устанавливается параметром size. Формат vdo_pool_size предназначен для удобства восприятия человеком, например: "30g", "50GiB". Значение по умолчанию равно размеру объема.

  • cached

    Это указывает, должен ли объем быть кэшируемым или нет. В настоящее время это поддерживается только для объемов LVM, где используется dm-cache.

  • cache_size

    Размер кэша. Формат cache_size предназначен для удобства восприятия человеком, например: "30g", "50GiB".

  • cache_mode

    Режим для кэша. Поддерживаемые значения включают writethrough (по умолчанию) и writeback.

  • cache_devices

    Список устройств, которые будут использоваться для кэша. Это должны быть либо физические объемы, либо диски, на которых выделены эти физические объемы. Обычно вам следует выбирать быстрые устройства, такие как SSD или NVMe диски для кэша.

  • thin

    Указывает, должен ли объем быть тонко выделенным или нет. Это поддерживается только для объемов LVM.

  • thin_pool_name

    Для thin объемов это можно использовать для указания имени пула LVM thin, который будет использоваться для объема. Если пул с указанным именем уже существует, объем будет добавлен в этот пул. Если он не существует, будет создан новый пул с именем thin_pool_name. Если не указано:

    • если существующих тонких пулов нет, будет создан новый тонкий пул с автоматически сгенерированным именем,
    • если существует ровно один существующий тонкий пул, тонкий объем будет добавлен в него, и
    • если существует несколько тонких пулов, будет вызвано исключение.
  • thin_pool_size

    Размер для тонкого пула. Формат thin_pool_size предназначен для удобства восприятия человеком, например: "30g", "50GiB".

storage_safe_mode

Когда значение истинно (по умолчанию), возникнет ошибка вместо автоматического удаления существующих устройств и/или форматирования.

storage_udevadm_trigger

Когда значение истинно (по умолчанию является ложным), роль будет использовать udevadm trigger для немедленного применения изменений udev. Это может помочь на некоторых платформах с "ошибочным" udev.

Пример playbook

- name: Управление хранилищем
  hosts: все
  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: диск
          disks: ["mpathc"]
          mount_point: /opt/images
          fs_label: images

rpm-ostree

Смотрите README-ostree.md

Лицензия

MIT

Установить
ansible-galaxy install linux-system-roles/storage
Лицензия
mit
Загрузки
87421
Владелец