forked from ungleich-public/cdist
100 lines
2.1 KiB
ReStructuredText
100 lines
2.1 KiB
ReStructuredText
|
Scan
|
||
|
=====
|
||
|
|
||
|
Description
|
||
|
-----------
|
||
|
Runs cdist as a daemon that discover/watch on hosts and reconfigure them
|
||
|
periodically. It is especially useful in netboot-based environment where hosts
|
||
|
boot unconfigured, and to ensure your infrastructure stays in sync with your
|
||
|
configuration.
|
||
|
|
||
|
This feature is still consider to be in **beta** stage.
|
||
|
|
||
|
Usage (Examples)
|
||
|
----------------
|
||
|
|
||
|
Discover hosts on local network and configure those whose name is resolved by
|
||
|
the name mapper script.
|
||
|
|
||
|
.. code-block:: sh
|
||
|
|
||
|
$ cdist scan --beta --interface eth0 \
|
||
|
--mode scan --name-mapper path/to/script \
|
||
|
--mode trigger --mode config
|
||
|
|
||
|
List known hosts and exit.
|
||
|
|
||
|
.. code-block:: sh
|
||
|
|
||
|
$ cdist scan --beta --list --name-mapper path/to/script
|
||
|
|
||
|
Please refer to `cdist(1)` for a detailed list of parameters.
|
||
|
|
||
|
Modes
|
||
|
-----
|
||
|
|
||
|
The scanner has 3 modes that can be independently toggled. If the `--mode`
|
||
|
parameter is not specified, only `tigger` and `scan` are enabled (= hosts are
|
||
|
not configured).
|
||
|
|
||
|
trigger
|
||
|
Send ICMPv6 requests to specific hosts or broadcast over IPv6 link-local to
|
||
|
trigger detection by the `scan` module.
|
||
|
|
||
|
scan
|
||
|
Watch for incoming ICMPv6 replies and optionally configure detected hosts.
|
||
|
|
||
|
config
|
||
|
Enable configuration of hosts detected by `scan`.
|
||
|
|
||
|
Name Mapper Script
|
||
|
------------------
|
||
|
|
||
|
The name mapper script takes an IPv6 address as first argument and writes the
|
||
|
resolved name to stdout - if any. The script must be executable.
|
||
|
|
||
|
Simplest script:
|
||
|
|
||
|
.. code-block:: sh
|
||
|
#!/bin/sh
|
||
|
|
||
|
case "$1" in
|
||
|
"fe80::20d:b9ff:fe57:3524")
|
||
|
printf "my-host-01"
|
||
|
;;
|
||
|
"fe80::7603:bdff:fe05:89bb")
|
||
|
printf "my-host-02"
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
Resolving name from `PTR` DNS record:
|
||
|
|
||
|
.. code-block:: sh
|
||
|
#!/bin/sh
|
||
|
|
||
|
for cmd in dig sed; do
|
||
|
if ! command -v $cmd > /dev/null; then
|
||
|
exit 1
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
dig +short -x "$1" | sed -e 's/.$//'
|
||
|
|
||
|
|
||
|
Trigger Source Script
|
||
|
---------------------
|
||
|
|
||
|
This script returns a list of addresses (separated by a newline) to be used by
|
||
|
`trigger` mode. It is not used to map names. The script must be executable.
|
||
|
|
||
|
Simplest script:
|
||
|
|
||
|
.. code-block:: sh
|
||
|
#!/bin/sh
|
||
|
|
||
|
cat << EOF
|
||
|
server1.domain.tld
|
||
|
server2.domain.tld
|
||
|
server3.domain.tld
|
||
|
EOF
|