Define Pre-Flight Checks for Orchestrate Module

Use Case

The Orchestrate module needs to define a series of pre-flight checks to be sure it's OK to run.

Scope of Work

This impacts every user of Orchestrator whether they use our Provision and Assemble modules or not.

Contextual Information

From #202 (closed)

If we are emphasizing the GitLab installation layer over the infrastructure layer, how do we enforce the architecture and specifications recommended in the reference architecture? One suggestion by @ronanoconnor was to have a check script that makes sure each node has the right specs before installing GitLab.

We also have an open issue to ensure that each node exists after Provision without resorting to brute force ssh-keyscan which tend to lock us out of the remote hosts before Orchestrate can even start on some operating systems.

Acceptance Criteria

The expected output of this issue is a list of pre-flight checks that we think are necessary to occur before the Orchestrate module starts its run against the target GitLab site(s).

This list will be inclusive of #151 (closed) dealing with validating nodes provisioned by the Provision module.

Each item from this list will be scoped into an issue with a definition of done and acceptance criteria for delivery.