Project

souschef

0.0
No release in over 3 years
Chef helper to get you started fast
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.6
>= 0

Runtime

 Project Readme

souschef

CLI utility to interact with Chef server

Install

Install the latest release from crates.io with Cargo:

cargo install souschef

This builds and installs the souschef binary into ~/.cargo/bin. Make sure that directory is on your PATH.

Chef server API docs

https://chef-server-api-docs.chef.io/

Profiles - Chef and Cinc

Supports using profiles from standard locations for:

  • Chef ~/.chef/knife.rb
  • Cinc ~/.cinc/knife.rb

If you have a configuration file in a non-standard location you can use -c or --config flag to use the path to the file.

Example:

souschef -p cinc ...
souschef -p chef ...

souschef -c /some/path/knife.rb ... 
  

Supported operations:

  • search 'query' [-a attribute ...]
  • cookbook list | show COOKBOOK [-v VERSION]
  • node list | show NODE | ssh NODE [-x user]
  • role list | show ROLE
  • environment list | show ENVIRONMENT
  • data bag list | show
  • data bag create | delete
  • data bag encrypt-file | decrypt-file
  • data bag upload-item | upload-encrypted-item
  • login NODE [-x user]
  • ssh 'query' 'command' [-x user]

Data bags

Full data bag management is supported, including encrypted items:

# Create / delete a data bag or item
souschef data bag create mybag
souschef data bag delete mybag [item]

# Encrypt / decrypt a JSON file locally using the shared secret
souschef data bag encrypt-file item.json --secret-file /path/to/secret
souschef data bag decrypt-file item.enc --secret-file /path/to/secret

# Upload a plain JSON file as an item (the file must contain an "id" field)
souschef data bag upload-item mybag item.json

# Decrypt an encrypted file and upload it as an item
souschef data bag upload-encrypted-item mybag item.enc --secret-file /path/to/secret

# Show contents
souschef data bag show mybag [item]

The secret can be provided inline with --secret or from a file with --secret-file. Uploads update the item if it already exists (PUT), otherwise create it (POST).

SSH usage

Two ways to reach a node over SSH:

  • login NODE — resolves the node's IP address from the Chef server and opens an interactive shell, equivalent to running ssh IP yourself.
  • node ssh NODE — same as login, kept for consistency with the node subcommands.
  • ssh 'query' 'command' — runs a single command across every node matching a search query (non-interactive).

For the interactive commands a valid ~/.ssh/config is helpful, as the process spawns a SSH client equivalent to the ssh NODE command.

If you want to specify a username, use -x:

  souschef login NODE -x user
  souschef node ssh NODE -x user
  souschef ssh 'search:query' 'command' -x user