Skip to content
This repository has been archived by the owner on Apr 29, 2020. It is now read-only.
Anthony Bishopric edited this page Jan 6, 2015 · 2 revisions

p2 - Tools for Scalable Software Deployment

What is p2?

p2 is a collection of tools that assist in managing service deployment at scale. There are several objectives of the p2 project:

  • Deploying service updates to hundreds of servers should be simple and safe.
  • Deployments should reflect a unique combination of code and configuration; either code or configuration should be deployable and rollback-able.
  • Deployment systems should be very good at the core deployment use-case while allowing customization where appropriate. Custom system and application requirements should be minimized as much as possible.
  • Deployment systems should be simple to use in both production and development settings.

How does p2 manage deployments?

There are several major concepts that you should understand before using or contributing to p2.

  • The Intent Store is a datasource that is queried for information about what should be running at any given time on any host in your infrastructure. p2 supports Consul as its primary intent store but might support others in the future.
  • Preparers run on every host in your infrastructure, constantly monitoring the intent store for changes.
  • Pods are collections of deployable artifacts, along with their configurations, that are assigned to particular hosts. p2 currently supports Hoist artifacts and will support other formats in the future. Pods are described in YAML manifests, which are stored directly in the intent store.
  • The Reality Store contains information on what is known to be running under p2 at the given moment. p2 uses Consul health checks to establish what is running. This lets us safely ensure a minimum number of available nodes for a given service when doing multi-node deployments, among other things.

See here for more details on setting up a cluster.

Clone this wiki locally