Manage ssh config on SRE dev machines

Background

As part of our SRE onboarding machine setup we configure SSH.

This SSH config is needed to properly proxy through bastion hosts in order to gain production access to chef-managed machines.

Problem

This config is a one-time setup. After this initial step, it is completely unmanaged. That means that as changes are made to the base config, there is no way to propagate them to dev machines.

As a result, there is a large amount of drift between configurations. Some of the existing configs have broken edge-cases, and getting the updates rolled out to everyone is a challenge.

Case in point: https://gitlab.com/gitlab-com/gl-infra/production-engineering/-/merge_requests/446.

Proposal

We should introduce a process and tooling to manage this configuration. This will enable us to:

  • effectively roll out changes to the SSH config
  • clean up unused logic
  • make it work more consistently and reliably
  • feed improvements back so that everybody can benefit from them

Solution

New glsh ssh-config command: gitlab-com/runbooks!8834 (merged).