Config Management Camp 2023 Ghent

Nickel + Terraform = ❤️
2023-02-06, 14:50–15:15, B.3.037

Nickel is a new configuration language being developed at Tweag. We are
developing tools and libraries for writing Terraform deployments in Nickel. Our
aim is improved modularity and reusability of infrastructure as code projects
by leveraging Nickel's gradual typing and expressive record merging.


This talk will be an introduction to using the Nickel configuration language
for writing Terraform deployments. Using Nickel we can structure deployments as
small, reusable snippets. They can depend on each other and will be merged
with first class dependency tracking into a final configuration. And all
this with an expressive gradual type system. Module authors can write
detailed contracts describing their interface. Users can write their
deployments while utilizing an LSP server to catch most silly mistakes
before even saving the file.

The Nickel language is based on a JSON data model with a gradually typed
functional language layered on top. This allows one to build powerful
abstractions. Libraries can make use of a static type system where it makes
sense. Types can serve as language checked documentation. However, actual
configurations don't have to be typed when it would only be a burden. A
contract system, essentially language enforced pre- and postconditions defined
by the programmer, ensures a sound interplay between the typed and untyped
fragments.

The presentation will include a hands-on example and a quick introduction to Nickel.

See also: Slide set

Viktor is a mathematician turned software engineer. After almost a decade of
thinking about algebraic geometry and homotopy theory, he joined Tweag in 2022
to work on more concrete problems. A computer nerd from childhood, he has long
been interested in infrastructure as code methods to manage his fleet of
machines. Using functional languages and strong type systems to save his
configurations from himself, he is currently working on Tweag's Nickel project
to improve the way we deal with software.