This document is a summary of the DebOps development over time. You can see most of the project's history in :command:`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 :command:`git` repository was moved into multiple :command:`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 :command:`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 :command:`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 :command:`git` repositories being independently tagged and developed. Because of that, in August 2017 the project maintainers decided to merge all of the :command:`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.
- Introduction of randomly generated passwords with the MySQL role. This feature will eventually evolve into :ref:`debops.secret` role and will be used almost everywhere in DebOps.
ansible-aiuaproject is renamed to ginas. ginas is not a server.
- Support for ownCloud deployment is introduced. The role is used as a test case for PHP5 support in the project, and eventually will become one of the end-user applications provided in 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.
- Support for GitLab CE deployment is introduced. The :ref:`gitlab <debops.gitlab>` role will be used to test Ruby support and as an integration test for other DebOps roles, as well as to provide a :command:`git` server for the IT infrastructures managed by DebOps.
- 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.
- Maciej Delmanowski writes the ipaddr() Ansible filter plugin for usage with :ref:`debops.ifupdown` role and others that require IP address manipulation. The plugin is later merged into Ansible Core.
- 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 :command:`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 :command:`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.
- Debian 8.0 (jessie) becomes a Debian Stable release.
- 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 :file:`meta/main.yml` configuration to the playbook level to allow easy use of various DebOps roles independently from each other.
- The debops-contrib GitHub organization is created to host third-party DebOps :command:`git` repositories and serve as a staging point for including new Ansible role repositories in DebOps.
- Ansible 2.0 ("Over the Hills and Far Away") is released.
- The DebOps mailing list is moved to a self-hosted Mailman installation based on DebOps, to ensure that the project is "eating its own dog food".
- Daniel Sender creates the first iteration of the debops Debian package. Unfortunately, problems with debops-doc package prevent full inclusion of the project in Debian.
- Debian 9.0 (stretch) becomes a Debian Stable release.
- 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-playbooks:command:`git` 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 :command:`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 :command:`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 :command:`git` repository and :command:`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 :command:`git` repository integrity. DebOps roles are not tested directly on Travis anymore.
- Support for Docker containers is introduced in the monorepo, along with an official 'debops/debops' Docker image which is automatically rebuilt and published on any changes in the repository.
- New test suite based on GitLab CI is introduced which allows testing of the DebOps roles using Vagrant, LXC and KVM/libvirt stack.
- DebOps role documentation is moved to the 'docs/' directory and the project documentation published on ReadTheDocs is switched to the DebOps monorepo version.
- End of Debian Wheezy LTS support.
- End of Debian Jessie LTS support.