Target Nodes
Tags, nodes, and how to target them with wire Tool.
Targeting Specific Nodes
wire apply --on without an @ prefix interprets as a literal node name. For example:
$ wire apply switch --on node-a,node-bWill switch-to-configuration on node a, and node b.
Reading from Stdin
Passing --on - will read whitespace-separated nodes and tags from stdin. This can be combined with normal --on usage.
For example:
$ echo "node-a node-b" | wire apply --on @other --on -Will apply on node-a, node-b, and all nodes with the tag @other.
Tag Basics
Nodes can have tags, which allows you to easily target multiple, related nodes for deployment.
let
sources = import ./npins;
wire = import sources.wire;
in wire.makeHive {
meta.nixpkgs = import sources.nixpkgs { };
node-1 = {
# ...
deployment.tags = ["cloud"];
};
node-2 = {
# ...
deployment.tags = ["cloud", "virtual"];
};
node-3 = {
# ...
deployment.tags = ["on-prem"];
};
node-4 = {
# ...
deployment.tags = ["virtual"];
};
node-5 = {
# Untagged
};
}To target all nodes with a specific tag, prefix tags with an @. For example, to deploy only nodes with the cloud tag, use
$ wire apply --on @cloudFurther Examples
INFO
Other operations such as an --ignore argument are unimplemented as of wire v0.2.0.
Mixing Tags with Node Names
You can mix tags and node names with --on:
$ wire apply --on @cloud --on node-5This will deploy all nodes in @cloud, alongside the node node-5.
Targeting Many Tags (Union)
You can specify many tags together:
$ wire apply --on @cloud @on-premThis is a union between @cloud and @on-prem.