Skip to main content

Repository structures

Basic process

The most basic process is as follows:

Advantages are:

  • No one can push to node without approval
  • Well documented who made what changes and when
  • If agent operates properly, then rollback should be straightforward

There are disadvantages.

  • We need a different git repo for each node, or
  • Every node gets every change immediately

That makes testing in dev and stage difficult. We could test from a branch, but that is problematic.

Two phase process

Git_root specifies deployments, that is, what nodes get what versions of what applications. Each node reads from a repository that is dedicated to that node. The deployer system flattens the deployment instructions to explicit instructions for each node and pushes those instructions into each node's repo.

This process makes testing easy. Push deployment instructions to the test environment. If that is successful, then push instructions to deploy to more nodes.

We still maintain complete visibility of what is deployed and when by inspecting each node repo.

Remote security

Many organizations, such as manufacturing and healthcare, cannot allow direct changes to their nodes behind their firewall from the cloud. In fact, these nodes cannot directly connect to the cloud at all.

Local approval

One can even put man in the middle, although we do not see how that would improve the process.