devshop/platform

Ansible collection for hosting websites.

dev-main 2023-10-11 23:03 UTC

This package is auto-updated.

Last update: 2024-04-11 20:06:06 UTC


README

CI

The DevShop.Platform Ansible collection extends Ansible's reach to track applications and services, in addition to hosts and roles.

Components

  1. App Hosts.
    • Ansible Hosts that refer to a single website, containing variables needed to deploy the site to one or many servers.
    • Multiple App Hosts can be assigned to a single Server Host, similar to Apache Vhosts.
    • App hosts store the Ansible facts/vars that are needed to install the site, such as Git repository, git reference, and web and database servers.
    • App Hosts can run App Roles, such as geerlingguy.drupal to finish set up of individual apps.
  2. Server Hosts.
    • Ansible Hosts that refer to real servers.
    • Server Hosts are assigned roles based on what "Service Groups" they are in.
    • Server Host list variables (such as apache_vhosts and mysql_databases) are aggregated from all App Hosts that are using each service to allow multiple App Hosts per Server.
  3. Service Groups.
  • A Service Group is an Ansible Host Group that provides a list of roles that get assigned to all members of the group. The groups are used to organize your Server Hosts by purpose, such as Web or DB.
  • See ./services/http.yml for an example.
  1. App Groups.
  • An App Group contains default variables for App Hosts that are built from pre-defined apps such as Drupal.
  • Each App Group can set different "build" or "install" commands, such as composer install vs. npm build or drush site-install vs app install
  • See ./services/drupal.yml for an example.

Using this collection

See examples folder for samples implementations.

Code of Conduct

We follow the Ansible Code of Conduct in all our interactions within this project.

If you encounter abusive behavior, please refer to the policy violations section of the Code for information on how to raise a complaint.

Contributing to this collection

The content of this collection is made by people like you, a community of individuals collaborating on making the world better through developing automation software.

We are actively accepting new contributors.

Any kind of contribution is very welcome.

You don't know how to start? Refer to our contribution guide!

We use the following guidelines:

Collection maintenance

The current maintainers are listed in the MAINTAINERS file. If you have questions or need help, feel free to mention them in the proposals.

To learn how to maintain / become a maintainer of this collection, refer to the Maintainer guidelines.

Governance

The process of decision making in this collection is based on discussing and finding consensus among participants.

Every voice is important. If you have something on your mind, create an issue or dedicated discussion and let's discuss it!

Installing the Collection from Ansible Galaxy

Before using this collection, you need to install it with the Ansible Galaxy command-line tool:

ansible-galaxy collection install NAMESPACE.COLLECTION_NAME

You can also include it in a requirements.yml file and install it with ansible-galaxy collection install -r requirements.yml, using the format:

---
collections:
  - name: devshop.platform

Note that if you install the collection from Ansible Galaxy, it will not be upgraded automatically when you upgrade the ansible package. To upgrade the collection to the latest available version, run the following command:

ansible-galaxy collection install NAMESPACE.COLLECTION_NAME --upgrade

You can also install a specific version of the collection, for example, if you need to downgrade when something is broken in the latest version (please report an issue in this repository). Use the following syntax to install version 0.1.0:

ansible-galaxy collection install devshop.platform:==0.1.0

See Ansible Using collections for more details.

Release notes

See the changelog.

Roadmap

More information

Licensing

GNU General Public License v3.0 or later.

See LICENSE to see the full text.