community.crypto.luks_device – Управление зашифрованными устройствами (LUKS)
Примечание
Этот плагин входит в коллекцию community.crypto (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.crypto
Для использования в книге задач укажите: community.crypto.luks_device
Обзор
- Модуль управляет LUKS на заданном устройстве. Поддерживает создание, удаление, открытие и закрытие контейнера LUKS, а также добавление или удаление новых ключей и паролей.
Требования
Ниже приведены требования, необходимые на хосте, на котором выполняется этот модуль.
- cryptsetup
- wipefs (когда state равен
absent) - lsblk
- blkid (при использовании параметров label или uuid)
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| cipher строка добавлен в 1.1.0 community.crypto | Этот параметр позволяет пользователю определить строку спецификации шифра для контейнера LUKS. Будет использоваться только при создании контейнера. Для ядер до 2.6.10 используйте aes-plain, так как они не понимают новые строки спецификаций шифра. Для использования ESSIV используйте aes-cbc-essiv:sha256. | |
| device строка | Устройство для работы (например, /dev/sda1). Требуется в большинстве случаев. Может быть опущено только при state=closed вместе с name. | |
| force_remove_last_key булево |
| Если установлено yes, позволяет удалить последний ключ из контейнера.ОСТОРОЖНО, после удаления последнего ключа из контейнера его больше нельзя открыть! |
| hash строка добавлен в 1.1.0 community.crypto | Этот параметр позволяет пользователю указать хеш-функцию, используемую в схеме установки ключей LUKS и хэш-сумме ключа тома. Будет использоваться только при создании контейнера. | |
| keyfile путь | Используется для разблокировки контейнера. Для большинства операций требуется либо keyfile, либо passphrase. Значение параметра — путь к файлу ключа с паролем. ОСТОРОЖНО, работа с файлами ключей в открытом виде опасна. Убедитесь, что они защищены. | |
| keysize целое число добавлен в 1.0.0 community.crypto | Устанавливает размер ключа только в том случае, если контейнер LUKS не существует. | |
| label строка добавлен в 1.0.0 community.crypto | Этот параметр позволяет пользователю создать контейнер LUKS2 с поддержкой меток, соответственно, для идентификации контейнера по метке при последующем использовании. Будет использоваться только при создании контейнера или когда device не указан. Не может быть указан, если type задан как luks1. | |
| name строка | Устанавливает имя контейнера при state=opened. Может использоваться вместо device при закрытии существующего контейнера (т.е. при state=closed). | |
| new_keyfile путь | Добавляет дополнительный ключ к заданному контейнеру на device. Требуется параметр keyfile или passphrase для авторизации. Контейнер LUKS поддерживает до 8 слотов ключей. Значение параметра — путь к файлу ключа с паролем. Обратите внимание, что добавление дополнительных ключей *не идемпотентно*. Будет использован новый слот ключа, даже если другой слот ключа уже существует для этого файла ключа. ОСТОРОЖНО, работа с файлами ключей в открытом виде опасна. Убедитесь, что они защищены. | |
| new_passphrase строка добавлен в 1.0.0 community.crypto | Добавляет дополнительный пароль к заданному контейнеру на device. Требуется параметр keyfile или passphrase для авторизации. Контейнер LUKS поддерживает до 8 слотов ключей. Значение параметра — строка с новым паролем. Обратите внимание, что добавление дополнительного пароля *не идемпотентно*. Будет использован новый слот ключа, даже если другой слот ключа уже существует для этого пароля. | |
| passphrase строка добавлен в 1.0.0 community.crypto | Используется для разблокировки контейнера. Для большинства операций требуется либо passphrase, либо keyfile. Значение параметра — строка с паролем. | |
| remove_keyfile путь | Удаляет заданный ключ из контейнера на device. Не удаляет файл ключа из файловой системы. Значение параметра — путь к файлу ключа с паролем. Обратите внимание, что удаление ключей *не идемпотентно*. Попытка удалить ключ, которого больше нет, приведет к ошибке. Обратите внимание, что для удаления последнего ключа из контейнера LUKS параметр force_remove_last_key должен быть установлен в yes.ОСТОРОЖНО, работа с файлами ключей в открытом виде опасна. Убедитесь, что они защищены. | |
| remove_passphrase строка добавлен в 1.0.0 community.crypto | Удаляет заданный пароль из контейнера на device. Значение параметра — строка с паролем для удаления. Обратите внимание, что удаление паролей *не идемпотентно*. Попытка удалить пароль, которого больше нет, приведет к ошибке. Обратите внимание, что для удаления последнего слота ключа из контейнера LUKS параметр force_remove_last_key должен быть установлен в yes. | |
| state строка |
| Желаемое состояние контейнера LUKS. В зависимости от его значения создаёт, удаляет, открывает или закрывает контейнер LUKS на заданном устройстве.
наличие создаст контейнер LUKS, если он ещё не создан. Требуются параметры device и либо keyfile, либо passphrase.
отсутствие удалит существующий контейнер LUKS, если он существует. Требуется device или name.
открыто разблокирует контейнер LUKS. Если он не существует, он будет создан сначала. Требуются параметры device и либо keyfile, либо passphrase. Используйте параметр name для задания имени открытого контейнера. В противном случае имя будет сгенерировано автоматически и возвращено как часть результата.
закрыто заблокирует контейнер LUKS. Однако, если контейнер не существует, он будет создан. Требуются параметры device и либо keyfile, либо passphrase. Если контейнер уже существует, достаточно device или name. |
| type строка добавлен в 1.0.0 community.crypto |
| Этот параметр позволяет пользователю явно определить формат контейнера LUKS, с которым он хочет работать. Варианты — luks1 или luks2
|
| uuid строка добавлен в 1.0.0 community.crypto | С помощью этого параметра пользователь может идентифицировать контейнер LUKS по UUID. Будет использоваться только при отсутствии device и label. |
Примеры
- name: Create LUKS container (remains unchanged if it already exists)
community.crypto.luks_device:
device: "/dev/loop0"
state: "present"
keyfile: "/vault/keyfile"
- name: Create LUKS container with a passphrase
community.crypto.luks_device:
device: "/dev/loop0"
state: "present"
passphrase: "foo"
- name: Create LUKS container with specific encryption
community.crypto.luks_device:
device: "/dev/loop0"
state: "present"
cipher: "aes"
hash: "sha256"
- name: (Create and) open the LUKS container; name it "mycrypt"
community.crypto.luks_device:
device: "/dev/loop0"
state: "opened"
name: "mycrypt"
keyfile: "/vault/keyfile"
- name: Close the existing LUKS container "mycrypt"
community.crypto.luks_device:
state: "closed"
name: "mycrypt"
- name: Make sure LUKS container exists and is closed
community.crypto.luks_device:
device: "/dev/loop0"
state: "closed"
keyfile: "/vault/keyfile"
- name: Create container if it does not exist and add new key to it
community.crypto.luks_device:
device: "/dev/loop0"
state: "present"
keyfile: "/vault/keyfile"
new_keyfile: "/vault/keyfile2"
- name: Add new key to the LUKS container (container has to exist)
community.crypto.luks_device:
device: "/dev/loop0"
keyfile: "/vault/keyfile"
new_keyfile: "/vault/keyfile2"
- name: Add new passphrase to the LUKS container
community.crypto.luks_device:
device: "/dev/loop0"
keyfile: "/vault/keyfile"
new_passphrase: "foo"
- name: Remove existing keyfile from the LUKS container
community.crypto.luks_device:
device: "/dev/loop0"
remove_keyfile: "/vault/keyfile2"
- name: Remove existing passphrase from the LUKS container
community.crypto.luks_device:
device: "/dev/loop0"
remove_passphrase: "foo"
- name: Completely remove the LUKS container and its contents
community.crypto.luks_device:
device: "/dev/loop0"
state: "absent"
- name: Create a container with label
community.crypto.luks_device:
device: "/dev/loop0"
state: "present"
keyfile: "/vault/keyfile"
label: personalLabelName
- name: Open the LUKS container based on label without device; name it "mycrypt"
community.crypto.luks_device:
label: "personalLabelName"
state: "opened"
name: "mycrypt"
keyfile: "/vault/keyfile"
- name: Close container based on UUID
community.crypto.luks_device:
uuid: 03ecd578-fad4-4e6c-9348-842e3e8fa340
state: "closed"
name: "mycrypt"
- name: Create a container using luks2 format
community.crypto.luks_device:
device: "/dev/loop0"
state: "present"
keyfile: "/vault/keyfile"
type: luks2
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| name строка | успех | При state=opened возвращает (сгенерированное или заданное) имя контейнера LUKS. Возвращает None, если имя не указано. Пример: luks-c1da9a58-2fde-4256-9d9f-6ab008b4dd1b |
Авторы
- Jan Pokorny (@japokorn)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/crypto/luks_device_module.html