Blueprint reverse-engineers servers.
- Easy configuration management.
- Detect relevant packages, files, and source installs.
- Generate reusable server configs.
- Convert blueprints to Puppet or Chef or CFEngine 3.
- No DSLs, no extra servers, no workflow changes.
Blueprint looks inside popular package managers, finds changes you made to configuration files, and archives software you built from source. It runs on Debian- and RPM-based Linux distros with Python >= 2.6 and Git >= 1.7. See http://devstructure.github.com/blueprint/ for comprehensive documentation and examples.
blueprint create my-first-blueprint Blueprint inspects your server and stores the results in its local repository. blueprint list shows all the blueprints you've created on this server.
blueprint apply my-first-blueprint Blueprint generates shell code from my-first-blueprint and executes it on the server.
blueprint show -S my-first-blueprint my-first-blueprint.sh is written to your working directory. Try out -P or -C or --cfengine3 to generate a Puppet module or a Chef cookbook or a CFEngine 3 sketch.
blueprint diff foo bar baz Blueprint subtracts bar from foo. Files, packages and sources that appears in foo but not bar will be carried over to baz and everything else will be dropped.
blueprint push my-first-blueprint The blueprint and its files are stored remotely. You get a secret URL for accessing it.
blueprint pull https://devstructure.com/MY-SECRET-KEY/my-first-blueprint The blueprint is stored locally and ready for use.
Prerequisites:
- Debian- or RPM-based Linux
- Python >= 2.6
- Git >= 1.7 (not just for installation from source)
You may need to add Defaults !always_set_home to /etc/sudoers to run blueprint as root, which is required in order to capture source tarballs.
echo "deb http://packages.devstructure.com $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/devstructure.list sudo wget -O /etc/apt/trusted.gpg.d/devstructure.gpg http://packages.devstructure.com/keyring.gpg sudo apt-get update sudo apt-get -y install blueprint pip install blueprint Make sure pip is using Python >= 2.6, otherwise the installation will succeed but Blueprint will not run.
git clone git://github.com/devstructure/blueprint.git cd blueprint git submodule update --init make && sudo make install rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm yum install python26 git clone git://github.com/devstructure/blueprint.git cd blueprint git submodule update --init make && sudo make install PYTHON=/usr/bin/python26 This installs Python 2.6 from EPEL side-by-side with Python 2.4 and so won’t break Yum.
The prose documentation provides a comprehensive overview of the tool including philosophy, installation, and detailed examples.
The HTTP protocols and endpoints used by blueprint-push(1) and blueprint-pull(1) are documented so that others may run compatible servers.
blueprint-list(1): list all blueprints.blueprint-create(1): create a blueprint.blueprint-rules(1): create a blueprint from a blueprint-rules file.blueprint-show(1): generate code from a blueprint.blueprint-diff(1): save the difference between two blueprints.blueprint-split(1): split one blueprint into two others interactively.blueprint-prune(1): select a subset of resources interactively.blueprint-template(1): render mustache.sh templates locally.blueprint-apply(1): run a blueprint's generated shell code.blueprint-push(1): push a blueprint to the Internet.blueprint-pull(1): pull a blueprint from the Internet.blueprint-destroy(1): destroy a blueprint.blueprint(5): Blueprint JSON format.blueprintignore(5): ignore specific files when creating blueprints.blueprint-rules(5): enumerate resources in blueprints.blueprint.cfg(5): centralized blueprint service configuration.blueprint-template(5):mustache.shtemplate language syntax.blueprint-template(7): built-in template data.blueprint(7): Blueprint Python library.
blueprint-git(1): low-level access to blueprints.blueprint-show-files(1): show files in a blueprint.blueprint-show-ignore(1): showblueprintignore(5) rules from a blueprint.blueprint-show-packages(1): show packages in a blueprint.blueprint-show-services(1): show services in a blueprint.blueprint-show-sources(1): show source tarballs in a blueprint.
Blueprint is BSD-licensed.
- Source code: https://github.com/devstructure/blueprint
- Issue tracker: https://github.com/devstructure/blueprint/issues
- Documentation: http://devstructure.github.com/blueprint/
- Wiki: https://github.com/devstructure/blueprint/wiki
- Mailing list: https://groups.google.com/forum/#!forum/blueprint-users
- IRC:
#devstructureon Freenode