Hacker News new | ask | show | jobs
by cube2222 1241 days ago
This looks really cool! I wonder if it only checks for collisions in the current statefile/template, or whether it actually makes call to the cloud provider and checks for even external collisions there? Though I guess that would be very complicated to accomplish without writing tons of glue code.

That said, if you like infra-as-code and are scaling your usage to more people, I recommend taking a look at tools like Spacelift[0].

We're a CI/CD that's specialized for infra-as-code and integrate very deeply with Terraform, CloudFormation, and similar tools workflows. This way we can give you better visibility, security and easy customizability through automations that are tailor-made for infra-as-code use cases. You can ofc additionally also hook in tools like this one.

Esp. if you want a single team creating reusable templates and guardrails for the whole company, Spacelift can help you a lot, but it's very useful for any bigger group of people using IaC together.

Disclaimer: Software Engineer at Spacelift, grains of salt shall be taken with the above

[0]: https://spacelift.io

1 comments

Hey Cube! It does indeed run checks against the cloud as well for things like naming collisions and quota allocation
Could you expand on how you're doing that, technically? I'm really curious and can't find it in the code, skimming it quickly.
Yeah, so this package itself is the core framework that establishes how these tests are to be run. There is a notion of plug-ins, which are parsers and checks. Parsers take cdk or terraform code and break their synthesized/planned output out into a common structure. Then checks run over that structure and pull data in from elsewhere and run actual validations. You can read more in the developing plugins doc on the repo https://github.com/tinystacks/precloud/blob/main/DEVELOPING_....

The default plugins present are the 6 mentioned here https://github.com/tinystacks/precloud/blob/main/PLUGINS.md. They’re all published on npm and github

Oh, that's cool, thanks for the explanation!