This document is a summary of the DebOps development over time. You can see most of the project's history in git logs, however tracing it might be confusing due to the split and subsequent merge of the code back together. Here, we try to explain why that happended.
Summary of the events¶
The project has been initiated by Maciej Delmanowski in October 2013. In September 2014, after two project name changes, the code contained in one git repository was moved into multiple git repositories published in the debops organization on GitHub to allow publication of the roles in the Ansible Galaxy, as well as better usage of Travis CI to test the codebase.
The decision to move the project coodebase to the separate git repositories shaped the DebOps project in multiple ways. It enforced the code separation between different Ansible roles that required development of proper ways to make them interact with each other and pass the data around. New open source projects, ansigenome and rolespec, were created to aid the DebOps development and maintenance.
Unfortunately, the growing codebase resulted in quickly rising number of git repositories to maintain, which sapped the available resources from project development. There were also issues with packaging the DebOps code and documentation in Debian, as well as no practical way to provide a "stable release" due to the separate git repositories being independently tagged and developed. Because of that, in August 2017 the project maintainers decided to merge all of the git repositories back into one monorepo to make the DebOps development easier.
The process was completed over a period of a few months. As the result, the development model also changed into a more distributed way with multiple forks of the main repository. At present, the DebOps codebase is being prepared for its first official stable release.
- Debian 7.0 (wheezy) becomes a Debian Stable release. It was the first Debian release supported by DebOps.
- Ansible 1.3 ("Top of the World") is released. This version introduced the role default variables, local facts and role dependencies, which became an integral part of DebOps later on.
- Initial commit in the
ansible-aiuagit repository which will eventually become DebOps.
- Project gains support for Vagrant virtual machines, used for demonstration purposes.
- Travis CI tests are introduced to find any issues with pull requests before merging them. The project gets its own GitHub organization, and new development model using forked repositories is introduced.
- Introduction of Sphinx-based documentation.
- Introduction of Nick Janetakis as a first major contributor to the project, with first draft of the Getting Started guide.
- Nick Janetakis creates ansigenome project which is meant to ease management of multiple Ansible roles.
ginasproject is renamed to DebOps project. The
debops.orgDNS domain is registered, project gets its own website, mailing list and GitHub organization.
- The last commit in the old DebOps repository. The development if this
repository has been frozen since. It is now included in the DebOps monorepo
as a separate
- Nick Janetakis creates rolespec project which provides a unified test environment for separate DebOps roles based on Travis CI.
- First version of the DebOps install scripts written in Bash, located in
debops-toolsrepository. They will be used to download all other DebOps repositories with playbooks and roles.
- Hartmut Goebel rewrites the Bash DebOps scripts in Python. They will be later published on PyPI which will become main installation method.
- debops-tools v0.1.0 is released. This repository contains various scripts that can be used to install or update DebOps roles and playbooks git repositories, create project directories, and run the playbooks.
- debops-playbooks v0.1.0 is released. This repository holds the DebOps playbooks that tie all of the roles together, and was treated as the "main" repository of the project when it was split into multiple git repositories.
- Robert Chady introduces custom Ansible lookup plugins to the project,
task_src, which allow usage of custom files and templates inside roles without modifications, as well as injection of custom Ansible tasks in the roles.
- Introduction of MariaDB server and client roles to the project. They were used to test and develop split client/server role model with support for database server on remote hosts, later adopted in other DebOps roles.
- After discussion in the community role dependency model in DebOps is
redesigned. Most of the role dependencies will be moved from the role
meta/main.ymlconfiguration to the playbook level to allow easy use of various DebOps roles independently from each other.
- Maciej Delmanowski proposes merge of all of the project repositories back together into one DebOps monorepo. The plan is to resolve all pending pull requests in various repositories before merging starts.
- debops-tools v0.5.0 was the last tagged release of the DebOps scripts before the repository was merged into the new DebOps monorepo.
- The last commit in the
debops-playbooksgit repository. Later on the repository will be merged into the new DebOps monorepo.
- All of the pending pull requests in DebOps roles are resolved and the code from separate git repositories is merged into single monorepo, which becomes the main development repository.
- debops v0.6.0 is released, along with updated scripts that support installation of the monorepo by the debops-update command. The release is fully compatible with older DebOps roles and playbooks. From this point on the old and new codebases start to diverge.
- ypid roles from 'debops-contrib' organization are merged to the DebOps monorepo without further changes; they will be integrated with the main playbook later on.
- Sphinx-based documentation is reinitialized in the monorepo. Previous iteration based on a central git repository and git submodules is deemed unsuitable, however current project documentation published on ReadTheDocs is kept in place, waiting before role documentation is fully migrated.
- New Travis CI test suite is introduced that focuses on syntax, testing Python scripts, YAML documents, project documentation and git repository integrity. DebOps roles are not tested directly on Travis anymore.
- DebOps role documentation is moved to the 'docs/' directory and the project documentation published on ReadTheDocs is switched to the DebOps monorepo version.