Programming language: Go
License: MIT License
Tags: Cloud Orchestration    
Latest version: v1.27.0

Spruce alternatives and similar tools

Based on the "Cloud Orchestration" category.
Alternatively, view Spruce alternatives based on common mentions on social networks and blogs.

  • Kubernetes

    Production-Grade Container Scheduling and Management
  • etcd

    Distributed reliable key-value store for the most critical data of a distributed system
  • Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.
  • consul

    Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
  • Salt

    9.2 9.9 L2 Spruce VS Salt
    Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:
  • zookeeper

    Apache ZooKeeper
  • Nomad

    Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
  • serf

    Service orchestration and management tool.
  • StackStorm

    StackStorm (aka "IFTTT for Ops") is event-driven automation for auto-remediation, security responses, troubleshooting, deployments, and more. Includes rules engine, workflow, 160 integration packs with 6000+ actions (see https://exchange.stackstorm.org) and ChatOps. Installer at https://docs.stackstorm.com/install/index.html. Questions? https://forum.stackstorm.com/.
  • Rundeck

    Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
  • doozerd

    A consistent distributed data store.
  • BOSH

    6.4 9.4 L4 Spruce VS BOSH
    Cloud Foundry BOSH is an open source tool chain for release engineering, deployment and lifecycle management of large scale distributed services.
  • Juju

    Universal Operator Lifecycle Manager (OLM) for Kubernetes operators, and operators for traditional Linux and Windows apps, with declarative integration between operators for automated microservice integration.
  • Cloud Foundry

    Deprecated: Cloud Foundry Release
  • MCollective

    MCollective Server and Client Puppet Module
  • Overcast

    Orchestrate VMs from your terminal.
  • CloudSlang

    Ready-Made CloudSlang Flows and Operations
  • Cloudify

    Open source TOSCA-based cloud orchestration software platform written in Python and YAML.
  • Genesis

    A BOSH Deployment Paradigm
  • Terraform

    Terraform works with many cloud providers and creates infrastructure from code.

Do you think we are missing an alternative of Spruce or a related project?

Add another 'Cloud Orchestration' Tool


          *          .---. ,---.  ,---.  .-. .-.  ,--,  ,---.         *
         /.\        ( .-._)| .-.\ | .-.\ | | | |.' .')  | .-'        /.\
        /..'\      (_) \   | |-' )| `-'/ | | | ||  |(_) | `-.       /..'\
        /'.'\      _  \ \  | |--' |   (  | | | |\  \    | .-'       /'.'\
       /.''.'\    ( `-'  ) | |    | |\ \ | `-')| \  `-. |  `--.    /.''.'\
       /.'.'.\     `----'  /(     |_| \)\`---(_)  \____\/( __.'    /.'.'.\
      ^^^[_]^^^                                                   ^^^[_]^^^

Build Status Slack ( We'll be in #spruce)

Introducing Spruce

spruce is a general purpose YAML & JSON merging tool.

It is designed to be an intuitive utility for merging YAML/JSON templates together to generate complicated YAML/JSON config files in a repeatable fashion. It can be used to stitch together some generic/top level definitions for the config and pull in overrides for site-specific configurations to DRY your configs up as much as possible.

How do I get started?

spruce is available via Homebrew, just brew tap starkandwayne/cf; brew install spruce

Alternatively, you can download a prebuilt binaries for 64-bit Linux, or Mac OS X

How do I compile from source?

  1. Install Go, e.g. on Ubuntu sudo snap install --classic go
  2. Fetch sources via go get github.com/geofffranks/spruce
  3. Change current directory to the source root cd ~/go/src/github.com/geofffranks/spruce/
  4. Compile and execute tests make all

Is there a playground I can use before installing spruce?

Yes! play.spruce.cf is around for testing out data merging + transformation in a cleanroom environment. It has a number of spruce versions available to it, and can be used to reproduce/troubleshoot bugs that you're seeing in production. Once you've reproduced an issue, or solution to a problem, you can save it, and share with a colleague, or reference in a GitHub issue.

A Quick Example

# Let's build the first yaml file we will merge
$ cat <<EOF first.yml
some_data: this will be overwritten later
  key1: some data
- first element

# and now build the second yaml file to merge on top of it
$ cat <<EOF second.yml
some_data: 42
  key2: adding more data
- (( prepend ))
- zeroth element
more_data: 84

# what happens when we spruce merge?
$ spruce merge first.yml second.yml
  key1: some data
  key2: adding more data
- zeroth element
- first element
more_data: 84
some_data: 42

The data in second.yml is overlayed on top of the data in first.yml. Check out the merge semantics and array merging for more info on how that was done. Or, check out this example on play.spruce.cf


What else can Spruce do for you?

spruce doesn't just stop at merging datastructures together. It also has the following helpful subcommands:

spruce diff - Allows you to get a useful diff of two YAML files, to see where they differ semantically. This is more than a simple diff tool, as it examines the functional differences, rather than just textual (e.g. key-ordering differences would be ignored)

spruce json - Allows you to convert a YAML document into JSON, for consumption by something that requires a JSON input. spruce merge will handle both YAML + JSON documents, but produce only YAML output.

spruce vaultinfo - Takes a list of files that would be merged together, and analyzes what paths in Vault would be looked up. Useful for determining explicitly what access an automated process might need to Vault to obtain the right credentials, and nothing more. Also useful if you need to audit what credentials your configs are retrieving for a system..


Licensed under the MIT License

*Note that all licence references and agreements mentioned in the Spruce README section above are relevant to that project's source code only.