56 lines
3.0 KiB
Markdown
56 lines
3.0 KiB
Markdown
# Secrets Role
|
||
|
||
Ansible роль для сохранения секретов на удаленной машине.
|
||
|
||
## Описание
|
||
|
||
Роль позволяет безопасно сохранять секреты на удаленной машине в виде файлов с ограниченными правами доступа. Поддерживает сохранение переменных как файлов и копирование существующих файлов.
|
||
|
||
## Параметры
|
||
|
||
### Обязательные параметры
|
||
|
||
- `secrets_dest` - директория, куда будут сохранены секреты в виде файлов
|
||
- `secrets_user` - имя пользователя, который будет владеть директорией и файлами
|
||
- `secrets_group` - группа, которая будет владеть директорией и файлами (по умолчанию равна `secrets_user`)
|
||
|
||
### Опциональные параметры
|
||
|
||
- `secrets_vars` - список переменных, из которых будут извлечены секреты (по умолчанию: `[]`)
|
||
- `secrets_files` - список файлов, которые будут скопированы "как есть" (по умолчанию: `[]`)
|
||
- `secrets_dir_mode` - права доступа для директории (по умолчанию: `0750`)
|
||
- `secrets_file_mode` - права доступа для файлов с секретами (по умолчанию: `0400`)
|
||
|
||
## Функциональность
|
||
|
||
1. Создает директорию `secrets_dest` если она не существует
|
||
2. Сохраняет каждую переменную из `secrets_vars` как файл с таким же именем
|
||
3. Копирует файлы из `secrets_files` в директорию назначения
|
||
4. Устанавливает права доступа `0400` для всех файлов с секретами
|
||
5. Назначает указанного пользователя и группу владельцами директории и файлов
|
||
|
||
## Пример использования
|
||
|
||
```yaml
|
||
- name: Save application secrets
|
||
include_role:
|
||
name: secrets
|
||
vars:
|
||
secrets_dest: /opt/myapp/secrets
|
||
secrets_user: myapp
|
||
secrets_group: myapp
|
||
secrets_vars:
|
||
- database_password
|
||
- api_key
|
||
- jwt_secret
|
||
secrets_files:
|
||
- /path/to/ssl/certificate.pem
|
||
- /path/to/ssl/private.key
|
||
```
|
||
|
||
## Безопасность
|
||
|
||
- Все файлы с секретами создаются с правами `0400` (только чтение для владельца)
|
||
- Директория создается с правами `0750` (полный доступ для владельца, чтение и выполнение для группы)
|
||
- Используется `no_log: true` для предотвращения вывода секретов в логи Ansible
|