All changes that impact users of this module are documented in this file, in the Common Changelog format with some additional specifications defined in the CONTRIBUTING file. This codebase adheres to Semantic Versioning.
Full changeset and discussions: #64.
Development of this release was supported by Reset Tech.
- Make nginx role usable outside this collection
Full changeset and discussions: #63.
Development of this release was supported by Reset Tech.
- Add
migrateplaybook for one-time changes on existing servers; runansible-playbook opentermsarchive.deployment.migratebeforedeploywhen upgrading
- Replace NodeSource repository with native Node.js packages on Debian >= 13 to fix deployment failure caused by NodeSource GPG key using SHA-1, rejected by apt since 2026-02-01
Full changeset and discussions: #58.
Development of this release was supported by Reset Tech.
- Support multi-tenant deployment on a single server, with isolated PM2 instances, nginx configurations, and SSH keys per collection
- Add configurable rate limiting for API requests through
ota_rate_limit_rateandota_rate_limit_burstinventory variables
- Breaking: Rename
ota_source_repositorytoota_collection_repository - Breaking: Rename
ota_source_repository_branchtoota_collection_repository_branch - Scope PM2 home directory per collection (
~/.pm2-{collection_id}) - Scope GitHub bot SSH keys per collection (
~/.ssh/ota-github-bot-key-{collection_id}) - Scope nginx configuration files per collection
Full changeset and discussions: #57.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Ensure compatibility with Debian 13
Full changeset and discussions: #56.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Enable PM2 to automatically restart Open Terms Archive applications after a reboot
Full changeset and discussions: #46.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Ensure configuration changes are taken into account on restart
- Make refined playbook execution work with the
start,stopandrestarttags
Full changeset and discussions: #45.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Set up the Git-based databases at the proper locations
- Make refined playbook execution work with the
infrastructuretag
Full changeset and discussions: #41.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Breaking: Replace all playbooks with a single
deployplaybook; update your scripts by usingansible-playbook opentermsarchive.deployment.deployand use tags to refine execution - Breaking: Change the
federation-apideployment process to be a dependency of the source repository - Breaking: Require
engine>=2andfederation-api>=v2 - Breaking: Make
ota_source_repositoryvariable mandatory - Breaking: Define environment variables in a
.envfile instead of in inventory variables; moveota_engine_github_token,ota_engine_smtp_password,ota_engine_sendinblue_api_key, andota_federated_api_smtp_passwordto a.envfile placed next to the inventory file and rename them according to the new naming conventions inenginev2 andfederation-apiv2 - Breaking: Rename
ota_engine_declarations_branchtoota_source_repository_branch - Breaking: Rename
ota_engine_declarations_directorytoota_directory - Breaking: Extract the PM2 config file
pm2.config.cjs; provide this file next to the inventory file - Breaking: Remove the
ota_engine_restart_delayvariable; define this setting directly in thepm2.config.cjs - Breaking: Remove the
ota_engine_github_bot_private_keyvariable in favor of thegithub-bot-private-keyfile; define the GitHub SSH private key in thegithub-bot-private-key
- Breaking: Remove
ota_reverse_proxy_federated_api_pathconfig; define this path in yourconfig/production.jsonunder the key@opentermsarchive/federation-api: { basePath: "" } - Breaking: Remove
ota_reverse_proxy_engine_pathconfig; define this path in yourconfig/production.jsonunder the key@opentermsarchive/engine: { collection-api: { basePath: "" } } - Breaking: Remove obsolete
ota_engine_config_path,ota_federated_api_branch,ota_federated_api_directory, andota_federated_api_repoconfigs - Breaking: Remove obsolete
update-declarationstag
Full changeset and discussions: #42.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Fix dependencies installation
Full changeset and discussions: #39.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Enable the deployment of the Open Terms Archive Engine and Federated API applications on a single server; refer to the added playbooks; remove any existing Nginx configurations previously installed by this collection like
engine-api,federated-api,ota-engine-api, orota-federated-apiin/etc/nginx/sites-availableto avoid conflicts.
Full changeset and discussions: #38.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Update package metadata
Full changeset and discussions: #35.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Enable configuration of engine restart delay with
ota_engine_restart_delayvariable
Full changeset and discussions: #34.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
No actual code changes were made in this release, but it signifies that the public API can now be considered stable.
Full changeset and discussions: #32.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Ensure snapshots and versions repositories use correct SSH key
Full changeset and discussions: #30.
Development of this release was supported by the French Ministry for Foreign Affairs through its ministerial State Startups incubator under the aegis of the Ambassador for Digital Affairs.
- Breaking: Extract embedded secrets and make them configurable; update your inventory to include secrets through configuration
Development of this release was supported by the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG CNECT under grant agreement N°101069594.
- Rename the
federated-apirole tofederated_apito comply with Ansible Galaxy constraints.
Development of this release was supported by the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG CNECT under grant agreement N°101069594.
- Add playbook to setup and deploy the Open Terms Archive federated API
- Breaking: Rename
deployplaybook to setup the infrastructure and deploy engine toengine.all; update your scripts accordingly - Breaking: Rename variable
ota_config_pathtoota_engine_config_path; update your inventory file accordingly - Breaking: Rename variable
ota_declarations_directorytoota_engine_declarations_directory; update your inventory file accordingly - Breaking: Rename variable
ota_declarations_branchtoota_engine_declarations_branch; update your inventory file accordingly - Breaking: Rename variable
ota_snapshots_branchtoota_engine_snapshots_branch; update your inventory file accordingly - Breaking: Rename variable
ota_versions_branchtoota_engine_versions_branch; update your inventory file accordingly
- Breaking: Remove tag
setup; use the application deployment playbook as replacement in your scriptsansible-playbook opentermsarchive.deployment.engine.application - Breaking: Remove tag
update; use the application deployment playbook as replacement in your scriptsansible-playbook opentermsarchive.deployment.engine.application - Breaking: Remove tag
engine; use the application deployment playbook as replacement in your scriptsansible-playbook opentermsarchive.deployment.engine.application - Breaking: Remove tag
infra; use the infrastructure set up playbook as replacement in your scriptsansible-playbook opentermsarchive.deployment.engine.infrastructure
- Ensure that the configuration for the port of the collection metadata API is successfully applied to the Nginx configuration
- Ensure that the Nodesource GPG key import does not get stuck
- Upgrade NodeJS to version 20 and NPM to version 10
- Fix MongoDB data directory permissions
- Lock pm2 major version
- Ensure NPM version is compatible with NodeJS version
- Launch API server; expect to have a npm command
start:apidefined in the declarations package - Install NGINX as a reverse proxy to expose the API with a rate limiter
- Automate linting with GitHub Actions
- Specification of changelog format
- Specification of changelog format is now in CONTRIBUTING
- Schedule dataset release; expect to have a npm command
dataset:scheduledefined in the declarations package
- Fix version update in
galaxy.ymlin the release workflow
- Ensure that publishing to Ansible Galaxy is only done when publishing to GitHub is successful
- Expect to have a npm command
start:scheduledefine in the declarations package
- Ensure paths for given Git storage configuration are relative to current declarations directory
- Define default value for
ota_config_path
- Change namespace from
otatoopentermsarchive
- Add documentation for available variables
- Move and consolidate all test-related files in the
testsfolder.
- Print debug output
- Fix some lintint errors and warnings
- Commit
galaxy.ymlin the release process
- Automate publishing with GitHub Actions