Argo and Service Now Every day, engineers ask for compute. Vm's, physical resources, cloud resources, and the current existing pipelines are purpose build for just their realm (dev webphp machines, or GCP instances, or vm's). The inspiration is to merge all of these requests, which in essence are the same thing, "I need a machine", and having all of those requests come from the same source and same request template. The goal is to have this template to everything with no human being intervention needed at all.
What it does
Establishes a self-service portal that anyone in the engineering organization can use to build a new piece of Terraform-controlled infrastructure, such as a development VM or GCP sandbox project. By limiting the scope of what can be built, and ensuring all services talk to each other programmatically, we have removed the need for human intervention in the build process. This will make life easier for both the engineers requesting new resources, who will see reduced turnaround times, as well as the teams responsible for fulfilling these requests, who will no longer be burdened by manual build and approval processes.
How we built it
This project leverages and ties together several existing platforms used for infrastructure builds: Terraform, Jenkins, and Service Now.
Challenges we ran into
Some issues with SNOW:
- form building does not lend itself to being dynamic, unintuitive
- ui bugs for drop downs and filters
- posting JSON data through existing scripting structure (external to internal)
- escaping in XML data
Accomplishments that we're proud of
This has the potential to allow any engineer to build their own vm's, with an enforced quota (limit 4-5 for example), and allow Argo to reclaim inactive vm's every 14 days. The amount of saved engineering hours is quite large. In addition, this solution can built both on-prem vm's and GCP Cloud instances, it's a universal hybrid solution.
What we learned
What's next for SNOW Argo
- Extending the machine types that are able to be built.
- Enforcing a per-user limit on active resources.
- Including a lifespan or time to live value for to allow instances to be cleaned up automatically.
- Extending our reach in to GCP
- Callback to populate SNOW with created machine details