comment: true title: Target Nodes description: Tags, nodes, and how to target them with wire Tool.#
Target Nodes#
{{ $frontmatter.description }}
Targeting Specific Nodes#
wire apply --on without an @ prefix interprets as a literal node name. For
example:
$ wire apply switch --on node-a,node-b
Will 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 @cloud
Further 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-5
This 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-prem
This is a union between @cloud and @on-prem.