Unfurl vs. …

Ansible

Unfurl shares many similarities with Ansible; in fact it relies on Ansible as a library. You can use it as a declarative wrapper around your Ansible playbooks and inventory. Because it records the history of operations that were previously applied, it can much more efficiently apply incremental updates.

Terraform

Terraform and Unfurl provide the same core functionality: deploying cloud infrastructure based on a declarative specification. And Unfurl integrates Terraform and Terraform modules. But under the surface there are significant differences:

TOSCA Orchestrators (e.g. Cloudify, Ystia Orchestrator)

Unlike other TOSCA Orchestrators, Unfurl doesn’t require a server component and more generally isn’t intended to manage very large infrastructure deployments – instead the expectation would be that Unfurl instead work with a dynamic orchestrator (mostly likely Kubernetes) or cloud provider APIs to achieve scale.

GitOps Tools

There are many tools that facilitate a GitOps development processes but each tool is specific infrastructure technology (mostly Kubernetes it seems) – some are listed below. In contrast, Unfurl provides a generic solution with an uniform process regardless of the technology being deployed. Unlike other GitOps tools Unfurl also records the state and status of deployed resources in Git.

Argo GitOps Engine and Flux GitOps Toolkit

Syncs a Kubernetes cluster with a Github repository that contains manifests. Its primary functionality is to monitor a registry for updates to container images and update both the cluster and the repo with the updated images.

Kube-applier

Similar to Flux in that it runs in cluster, monitoring a git repo that contains manifests and applies them. Has a simple web ui and exports metrics but doesn’t save the cluster’s state.

Helmfile

Applies Kubernetes Helm charts with environment specific values that can be checked into git.