End-to-end declarative deployment means having a set of files describing the desired end state of the entire production pipeline, in such a way that we can materialize it with a single command. In this case, that pipeline consists of building, provisioning, and deploying a simple web service to Amazon EC2.
I describe the ideas and methods in detail in the accompanying tutorial blog post.
The iplz
application itself is a simple icanhazip.com
clone, it echoes the client's IP address back at them.
It serves as a stand-in for a larger application, see the binplz.dev repo for how the ideas presented here work in a more complex situation.
-
Run
nix run .#terraform -- init
to create Terraform lock files
nix run .#terraform -- apply
There is no step 2.