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
|