Return/control aspects of the grains data
Look up the given grain in a given dictionary for the current OS and return the result
Although this may occasionally be useful at the CLI, the primary intent of this function is for use in Jinja to make short work of creating lookup tables for OS-specific data. For example:
{% set pkg_table = {
'Debian': {'name': 'apache2'},
'RedHat': {'name': 'httpd'},
} %}
{% set pkg = salt['grains.filter_by'](pkg_table) %}
myapache:
pkg:
- installed
- name: {{ pkg.name }}
CLI Example:
salt '*' grains.filter_by '{Debian: Debheads rule, RedHat: I love my hat}'
Attempt to retrieve the named value from grains, if the named value is not available return the passed default. The default return is an empty string.
The value can also represent a value in a nested dict using a ":" delimiter for the dict. This means that if a dict in grains looks like this:
{'pkg': {'apache': 'httpd'}}
To retrieve the value associated with the apache key in the pkg dict this key can be passed:
pkg:apache
CLI Example:
salt '*' grains.get pkg:apache
Return one or more grains
CLI Example:
salt '*' grains.item os
salt '*' grains.item os osrelease oscodename
Sanitized CLI Example:
salt '*' grains.item host sanitize=True
Return all of the minion's grains
CLI Example:
salt '*' grains.items
Sanitized CLI output:
salt '*' grains.items sanitize=True
Return a list of all available grains
CLI Example:
salt '*' grains.ls
Set a grains value in the grains config file
CLI Example:
salt '*' grains.setval key val