Перейти к основному содержимому
Версия: 7.0

Docker-контейнер для CLI

Описание

В директории ./docker содержится конфигурация Docker для запуска Пассворка CLI в контейнеризированной среде. Это полезно для CI/CD пайплайнов в системах непрерывной интеграции.

Получение

Склонировать Python-коннектор с GitHub, в котором расположена Docker директория:

git clone git@github.com:passwork-me/passwork-python.git

Перейти в Docker директорию:

cd ./passwork-python/docker/

Сборка Docker-образа

docker build -t passwork-cli .

Использование Docker-контейнера

Базовое использование

Запустить passwork-cli контейнер, передав учетные данные Пассворка через переменное окружения:

docker run -it --rm \
-e PASSWORK_HOST="https://your-passwork-instance.com" \
-e PASSWORK_TOKEN="your_access_token" \
-e PASSWORK_MASTER_KEY="your_master_key" \
passwork-cli exec --password-id "password_id" env

Использование с Docker Compose

Скопировать и изменить имя файла на docker-compose.yml на основе примера:

# При необходимости можно отредактировать docker-compose.yml
cp docker-compose.example.yml docker-compose.yml

Скопировать и изменить имя файла на .env на основе примера:

# Указать свои учетные данные в .env
cp .env.example .env

Запустить с помощью Docker Compose:

docker-compose run --rm passwork-cli exec --password-id "password_id" env

Пример вывода

docker compose run --rm passwork-cli exec --password-id "67ff59139b0d5d96310084c5" env
WARN[0000] /opt/passwork-python-connector/docker/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
HOSTNAME=d6ec78fda6e0
HOME=/home/passwork
GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
PYTHON_SHA256=849da87af4df137710c1796e276a955f7a85c9f971081067c8f565d15c352a09
PASSWORK_REFRESH_TOKEN=YT7ldSSD4qjzqCzIKK/3dGdQyNwB2erODWN3AoVd14E=
PASSWORK_TOKEN=LzS8ABjoa3wlvE+bqVZXHuFsQlc7XmxKIp+9HMu+800=
TERM=xterm
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=C.UTF-8
PASSWORK_HOST=https://passwork.example.com
PASSWORK_MASTER_KEY=1lZyMBmT8Mqyj1cDcyiZHDZLHgyejvbMaUoohb1YYxuJnliDbdvgK8H4MWkSaXHZvqZyS9drsrZoOFbDVs5wBQ==
PYTHON_VERSION=3.11.12
PWD=/app
MONGODB_PASSWORD=P@ssw0rd

Примеры

Получение пароля и использование в команде:

docker run -it --rm \
-e PASSWORK_HOST="https://your-passwork.com" \
-e PASSWORK_TOKEN="your_token" \
-e PASSWORK_MASTER_KEY="your_master_key" \
passwork-cli exec --password-id "db_password_id" mysql -h db_host -u admin -p "$DB_PASSWORD" db_name
к сведению

Если клиентское-шифрование не используется, необходимо удалить строку — -e PASSWORK_MASTER_KEY="your_master_key" \

Прямой вызов к API:

docker run -it --rm \
-e PASSWORK_HOST="https://your-passwork.com" \
-e PASSWORK_TOKEN="your_token" \
-e PASSWORK_MASTER_KEY="your_master_key" \
passwork-cli api --method GET --endpoint "v1/vaults"
к сведению

Если клиентское-шифрование не используется, необходимо удалить строку — -e PASSWORK_MASTER_KEY="your_master_key" \

Использование в Bitbucket Pipelines

Добавить в bitbucket-pipelines.yml следующий блок:

pipelines:
default:
- step:
name: Deploy with Passwork credentials
image: passwork-cli
script:
- passwork-cli exec --password-id "deploy_credentials" ./deploy.sh
services:
- docker
caches:
- docker

Также можно использовать Docker-образ напрямую из реестра контейнеров:

pipelines:
default:
- step:
name: Deploy with Passwork credentials
image: your-registry.com/passwork-cli:latest
script:
- passwork-cli exec --password-id "deploy_credentials" ./deploy.sh

Соображения безопасности

  • Docker-образ работает от имени не root-пользователя, что повышает уровень безопасности;
  • Необходимо использовать безопасные переменные окружения в CI/CD пайплайнах для хранения учетных данных.