nodeattrib(8) -- List or change confluent nodes attributes
=========================================================

## SYNOPSIS

`nodeattrib [-b] <noderange> [<nodeattribute>...]`  
`nodeattrib <noderange> [<nodeattribute1=value1> <nodeattribute2=value2> ...]`  
`nodeattrib -c <noderange> <nodeattribute1> <nodeattribute2> ...`  

## DESCRIPTION

**nodeattrib** manages the attributes of confluent nodes.  In
the simplest form, it simply takes the given noderange(5) and lists the
matching nodes, one line at a time.

If a list of node attribute names are given, the value of those are also
displayed.  If `-b` is specified, it will also display information on
how inherited and expression based attributes are defined.  Attributes can be
straightforward values, or an expression as documented in nodeattribexpressions(5).
For a full list of attributes, run `nodeattrib <node> all` against a node.
If `-c` is specified, this will set the nodeattribute to a null valid.
This is different from setting the value to an empty string.

Note that `nodeattrib <group>` will likely not provide the expected behavior.
See nodegroupattrib(8) command on how to manage attributes on a group level.

## OPTIONS

* `-b`, `--blame`:
  Annotate inherited and expression based attributes to show their base value.
* `-c`, `--clear`:
  Clear specified nodeattributes

## EXAMPLES
* Listing matching nodes of a simple noderange:
    `# nodeattrib n1-n2`  
    `n1: console.method: ipmi`  
    `n1: hardwaremanagement.manager: 172.30.3.1`  
    `n2: console.method: ipmi`  
    `n2: hardwaremanagement.manager: 172.30.3.2`  

* Getting an attribute of nodes matching a noderange:
    `# nodeattrib n1,n2 hardwaremanagement.manager`  
    `n1: hardwaremanagement.manager: 172.30.3.1`  
    `n2: hardwaremanagement.manager: 172.30.3.2`  

* Getting a group of attributes while determining what group defines them:
    `# nodeattrib n1,n2 hardwaremanagement --blame`  
    `n1: hardwaremanagement.manager: 172.30.3.1`  
    `n1: hardwaremanagement.method: ipmi (inherited from group everything)`  
    `n1: hardwaremanagement.switch: r8e1`  
    `n1: hardwaremanagement.switchport: 14`  
    `n2: hardwaremanagement.manager: 172.30.3.2`  
    `n2: hardwaremanagement.method: ipmi (inherited from group everything)`  
    `n2: hardwaremanagement.switch: r8e1`  
    `n2: hardwaremanagement.switchport: 2`  

* Listing matching nodes of a simple noderange that are set:
    `# nodeattrib n1-n2 current`  
    `n1: console.method: ipmi`  
    `n1: hardwaremanagement.manager: 172.30.3.1`  
    `n2: console.method: ipmi`  
    `n2: hardwaremanagement.manager: 172.30.3.2`  

* Change attribute on nodes of a simple noderange:
    `# nodeattrib n1-n2 console.method=serial`  
    `n1: console.method: serial`  
    `n1: hardwaremanagement.manager: 172.30.3.1`  
    `n2: console.method: serial`  
    `n2: hardwaremanagement.manager: 172.30.3.2`  

* Clear attribute on nodes of a simple noderange, if you want to retain the variable set the attribute to "":
    `# nodeattrib n1-n2 -c console.method`  
    `# nodeattrib n1-n2 console.method`  
    `n1: console.method: `  
    `n2: console.method: `  

## SEE ALSO

nodegroupattrib(8), nodeattribexpressions(5)