Add Ansible for a Remote Asset API server
This adds ansible for a Remote Asset API-based cache server, using bb-storage for a CAS and bb-asset-hub as the Remote Asset API server implementation. This uses a docker-compose based deployment rather than the current systemd service based one. Fedora 32 has difficulties with installing docker, so I used an ubuntu host. If need be, I'm sure we can work around the installation troubles and use fedora.
The deployment uses traefik as a point of entry, which performs TLS termination, ACME certificate renewal, and gRPC routing of traffic. All remote asset requests are sent to bb-asset-hub, and all remote execution and bytestream requests are sent to bb-storage. Both bb-asset-hub and bb-storage are using disk-based storage. This tends to be the most reliable method of storage in my experience. If preferred, we can change the asset hub and action cache to use in-memory storage instead, but the CAS is best based on disk.
The ansible should be idempotent, and contains a bunch of variables which should be able to be changed to suit general deployments.
This is in preparation for the change to the Remote Asset API and deprecation of bst-artifact-server, and should be used for overnight integration tests.
This has been tested at bb-cache.buildstream.build but will hopefully be deployed to the existing cache-test.buildstream.build. https://gitlab.com/BuildStream/buildstream/-/jobs/702271400#L402 is currently in progress building using a cache deployed under this configuration.