Pantry - Configuration management tool for chef-solo
version 0.001
N.B. This program doesn't do much yet, but I'll expand this synopses incrementally as features are added
$ mkdir my-project $ cd my-project $ pantry init $ pantry create node foo.example.com $ pantry edit node foo.example.com $ pantry sync node foo.example.com
pantry is a utility to make it easier to manage a collection of computers with the configuration management tool chef-solo
pantry
Arguments to the pantry command line tool follow a regular structure:
$ pantry VERB [[NOUN] [ARGUMENTS...]]
See the following sections for details and examples by topic.
$ pantry init
This initializes a pantry in the current directory. Currently, it just creates some directories for use storing cookbooks, node data, etc.
$ pantry create node NAME
Creates a node configuration file for the given NAME. The NAME must be a valid DNS name or IP address.
NAME
$ pantry edit node NAME
Invokes the editor given by the environment variable EDITOR on the configuration file for the name node.
EDITOR
name
$ pantry sync node NAME
Copies cookbooks and configuration data to the NAME node and invokes chef-solo via ssh to start a configuration run.
chef-solo
ssh
pantry relies on OpenSSH for secure communications with managed nodes, but does not manage keys itself. Instead, it expects the user to manage keys using standard OpenSSH configuration and tools.
The user should specify SSH private keys to use in the ssh config file. One approach would be to use the IdentityFile with a host-name wildcard:
IdentityFile
IdentityFile ~/.ssh/identities/id_dsa_%h
This would allow a directory of host-specific identities (which could all be symlinks to a master key). Another alternative might be to create a master key for each environment:
IdentityFile ~/.ssh/id_dsa_dev IdentityFile ~/.ssh/id_dsa_test IdentityFile ~/.ssh/id_dsa_prod
pantry also assumes that the user will unlock keys using ssh-agent. For example, assuming that ssh-agent has not already been invoked by a graphical shell session, it can be started with a subshell of a terminal:
ssh-agent
$ ssh-agent $SHELL
Then private keys can be unlocked in advance of running pantry using ssh-add:
ssh-add
$ ssh-add ~/.ssh/id_dsa_test $ pantry ...
See the documentation for ssh-add for control over how long keys stay unlocked.
Inspiration for this tool came from similar chef-solo management tools. In addition to being implemented in different languages, each approaches the problem in slightly different ways, neither of which fit my priorities. Nevertheless, if you use chef-solo, you might consider them as well:
littlechef (Python)
pocketknife (Ruby)
Please report any bugs or feature requests through the issue tracker at http://github.com/dagolden/Pantry/issues. You will be notified automatically of any progress on your issue.
This is open source software. The code repository is available for public review and contribution under the terms of the license.
https://github.com/dagolden/pantry
git clone https://github.com/dagolden/pantry.git
David Golden <dagolden@cpan.org>
This software is Copyright (c) 2011 by David Golden.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
To install Pantry, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Pantry
CPAN shell
perl -MCPAN -e shell install Pantry
For more information on module installation, please visit the detailed CPAN module installation guide.