Open caufieldjh opened 2 years ago
Re: GCP and Terraform, see also:
Terraform also has a "Terraform Cloud" variant:
Terraform Cloud (TFC) is a free to use, self-service SaaS platform that extends the capabilities of the open source Terraform CLI and adds collaboration and automation features.
Terraform Cloud enables connecting to common VCS platforms (GitHub, GitLab, Bitbucket) and triggering Terraform runs (plan and apply) from changes to configuration within the VCS. TFC manages state for the user, including keeping a history of changes. Terraform Cloud exposes an HTTP API that anyone can integrate with to build more automation around infrastructure change.
This might be overkill but it may also be more closely aligned with our intent for NEAT and KG-Hub.
A nice thing about the Terraform Cloud: it includes cost estimations for each run.
I'm warming up to using Terraform.
One way we could do this:
graph_ml
directory (indicating that we need to run NEATAdding: I realize plan this doesn't exactly comport with the title of this ticket, "Consider alternatives to Jenkins", since I'm suggesting we use both Jenkins and Terraform.
However, I think it does make some sense to either keep using Jenkins for ETL and also NEAT/GCE stuff (with Terraform for GCE stuff), or abandon Jenkins altogether and go all in with Terraform (which we could also do)
I think Jenkins still works very well for the ETL functions, KG publishing, and even things like starting DB instances/journals, but I think part of the value added by Terraform may be that it reduces the number of points of failure between users and GCE. Terraform could certainly be set to run on a cron schedule much like Jenkins, spin up a pre-made listener instance to do the bucket query, and then spin up GCE instances as needed based on an image containing the necessary dependencies.
But in the end, how do we abstract away most of the Terraform parts?
This is a helpful little walkthrough/getting-started on Terraform, and also this Medium post shows one way of doing something similar to what I'm proposing
Could use as alternatives to Jenkins: