1. blueprint-rules(5)
  2. Blueprint
  3. blueprint-rules(5)


blueprint-rules - enumerate resources in blueprints




blueprint-rules files, typically seen with the .blueprint-rules extension or with negated meaning as /etc/blueprintignore and ~/.blueprintignore, contain an ordered list of rules that determine whether resources are included in blueprints.

The general form has its origins in gitignore(5): any valid gitignore file is also a valid blueprint-rules file.

Blank lines and lines that begin with a # will be ignored.

The general form of each line is :type:resource, where type is one of file, package, service, or source. The file type is assumed when a rule omits the :type: prefix.

The meaning of a rule that begins with a ! is negated.

File resources

File resources that do not contain a / are matched using fnmatch(3) against the last component of each file considered. Patterns that contain a / but do not begin with a / are expanded relative to /etc before being matched using glob(3).

Package resources

Package resources are of the form :package:manager/package. Note that the manager is not a colloquial name (for example, "gem") but rather the specific name of the package manager's package (in the example, on Debian, "rubygems1.8").

A rule that ignores a package implicitly ignores its dependencies as well. This empirically results in the most compact, yet complete, blueprints. A rule that includes a package takes no such implicit action.

Service resources

Service resources are of the form :service:manager/service. Ignoring a service will prevent Blueprint from taking action on its behalf.

Source resources

Source resources are of the form :source:pathname format and must be fully-qualified (that is, begin with a /).



ssh.blueprint-rules enumerates the resources that install and configure an SSH server, while ignoring /etc/ssh/moduli.



/etc/blueprintignore is parsed in a negative context - it enumerates resources that should be ignored by blueprint-create(1).


This example takes advantage of an emergent behavior: by ignoring and immediately unignoring (with the ! rule) the package build-essential, blueprint-create(1) will include build-essential but not its dependencies, thus creating a more compact blueprint.


/etc/blueprintignore, ~/.blueprintignore
Lists of filename patterns to be ignored when creating blueprints.


The Flaming Lips - "The W.A.N.D. (The Will Always Negates Defeat)"


Richard Crowley richard@devstructure.com


Part of blueprint(1).

  1. DevStructure
  2. December 2011
  3. blueprint-rules(5)