Kitchen driver to use existing hosts
This is a Test Kitchen driver for use in cases, where you have an
existing machine, such as a physical server which you want
to use for your tests.
The static driver is directly derived from TK’s “proxy” driver,
which is relying on legacy plugin infrastructure - making it directly
incompatible with Windows platforms.
---
driver:
name: static
host: 192.168.14.2
# now the rest of your kitchen.yml follows
The host
configuration setting, which specifies the hostname/IP you want tests
to run against.
If you have more than one server, for example when testing specific hardware
drivers, just add a suite for each and override the host
value in its
section
As this is a pure driver which does not interact with the instances/VMs, it
supports all platforms. Specifically Linux and Windows are known to work.
As physical machines are a limited resource and are rarely bought or thrown
away in a TestKitchen context, some sort of queueing mechanism is needed in
bigger environments.
To enable this feature, set queueing
to true
(default: false
)
driver:
name: static
queueing: true
request:
execute: /usr/local/bin/get-host.sh
release:
execute: /usr/local/bin/release-host.sh $STATIC_HOSTNAME
...
Queueing knows two Actions:
request
to obtain the hostname or IP of the machine to userelease
to return this host into the poolIf you are using non-ephemeral test systems, like physical machines, you will
need to trigger some procedure to reset them back to the defined default. Otherwise,
every test will modify the system further until results get unpredictable.
There currently is just one handler for queueing scenarios:
script
handler, which executes a local scriptName | Default | Description |
---|---|---|
queueing |
false | If to invoke external actions to get hostname |
queueing_timeout |
3600 | Timeout for queueing operations in seconds. |
queueing_handlers |
- | Glob to load external queueing handlers |
static
This handler only executes local commands. These could query remote databases or
even issue more complex programs to obtain/release machines.
request
Name | Default | Description |
---|---|---|
type |
script |
|
execute |
- | Command to execute |
match_hostname |
^(.*)$ |
Regex to specify what to grab from output. Default: All |
match_banner |
- | Regex to specify optional banner to grab. Default: Nothing |
If a banner is grabbed, it’s contents are displaed after the message reporting the
hostname. This field can be used for warnings or additional information like access
to management interfaces (ILO, BMC, …).
release
Name | Default | Description |
---|---|---|
type |
script |
|
execute |
- | Command to execute |
The executed script gets the following environment variables:
STATIC_HOSTNAME
: Hostname or IP of the host to be releasedApache 2.0 (see LICENSE)