Утилита forge позволяет динамически обновлять конфигурацию файлов docker compose и docker swarm. Для контроля версий используется хранилище Vault.
Конфигурация
Для работы утилиты необходимо создать конфигурационный файл forge.yml в директории /var/forge/. Пример:
vault:
url: http://127.0.0.1:8080
token: vault_token
Docker compose
Спецификация позволяет отслеживать образ и его тег. Пример:
docker-compose.yaml
services:
registry:
image: {{.Image}}:{{.Tag}}
container_name: registry
restart: unless-stopped
ports:
- 5050:5050
volumes:
- ./conf:/registry/conf.d:ro
- registry-data:/registry/var
volumes:
registry-data:
При инициализации конфигурационного файла в хранилище Vault появится секрет: 
Docker swarm
Спецификация позволяет отслеживать названия образа и его тег и количество реплик. Пример:
При инициализации конфигурационного файла в хранилище Vault появится секрет: 
Использование
Перед инициализацией конфигурационного файла необходимо создать шаблон и расположить его в каталоге var/forge/templates.
Инициализация конфигурационных файла разрешена только из списка доступных шаблонов.
template
Выводит список доступных шаблонов.
env
init
Сопоставляет шаблон указанного файла и создает vault secret исходя из его спецификации.
параметры:
<project> название проекта.
флаги:
-m спецификация файла. По-умолчанию compose. Разрешенные значения: compose | swarm
пример команды:
set
Обновляет параметры модели указанного проекта согласно спецификации.
параметры:
<project> название проекта.
флаги:
-p параметр, который необходимо обновить. Можно указать несколько.
пример команды:
Для спецификации docker swarm можно обновлять один произвольный параметр или указать сразу два.
get
Выводит информацию о текущей конфигурации указанного проекта.
параметры:
<project> название проекта.
флаги:
-c вывод конфигурационного файла.
пример команды:
При вызове команды без флагов в консоль будет выведен форматированный вывод данных согласно спецификации.
versions
Выводит информацию о версиях конфигурации указанного проекта.
параметры:
<project> название проекта.
пример команды:
rollback
Откатывает конфигурацию проекта до указанной версии.
параметры:
<project> название проекта.
флаги:
-v версия конфигурации в Vault.
пример команды:
deploy
enable completion
bash