Kayak Client Configuration
A Kayak client’s configuration file is a snippet of bash script that
gets executed during the installation process. When installation begins,
the client config is fetched from the Kayak server to /tmp/_install_config
.
A sample client config is in /usr/share/kayak/sample/000000000000.sample
and
looks like this:
BuildRpool c0t0d0 c0t1d0
SetHostname instalz
SetTimezone UTC
EnableDNS example.com
SetDNS 80.80.80.80 1.1.1.1
#
# Substitute your interface name for "e1000g0" below
Postboot '/sbin/ipadm create-if e1000g0'
Postboot '/sbin/ipadm create-addr -T dhcp e1000g0/v4'
#
# For static networking, edit the following for your environment
# and remove the second ipadm line above.
# Postboot '/sbin/ipadm create-addr -T static -a 192.168.1.2/24 e1000g0/v4'
# Postboot '/sbin/route -p add default 192.168.1.1'
#
# Uncomment to disable automatic reboot
# NO_REBOOT=1
Strictly speaking, the only mandatory component is BuildRpool
but
you will probably want to set things like the hostname, timezone and DNS
and set up networking. See below for additional Postboot examples.
BuildRpool
Arguments are one or more of:
- Disk device names like c0d0 (IDE, legacy-mode SATA) or c0t0d0 (SCSI/AHCI/SAS/FC), space-separated;
- Size comparisons: either < or > may be specified along with a number of megabytes to indicate that you want only devices less than or equal to, or greater than or equal to that size, respectively;
- Patterns: indicated by a leading ~, patterns are fed to egrep(1) to limit the list of devices to those whose descriptions match the pattern.
Arguments may be combined. If multiple arguments are comma-separated, the terms are ANDed together so that only devices matching all constraints are considered. Any space-separated arguments are evaluated separately.
Each device will be formatted with an SMI disklabel and partitioned such that encompasses the full size of the disk. At this time, partitioning is not configurable.
If multiple devices are matched by the argument(s), a simple n-way mirror will be created.
Examples:
Command | Description |
---|---|
BuildRpool c0t0d0 | Use c0t0d0 only |
BuildRpool c0t0d0 c0t1d0 | Use c0t0d0 and c0t1d0 only (makes a 2-way mirror) |
BuildRpool <161000 | Use all devices whose size is less than or equal to 161,000 MB |
BuildRpool >80000,<1000000 | Use all devices whose size is greater than or equal to 80,000 MB and less than or equal to 1,000,000 MB (1 TB) |
BuildRpool ~SEAGATE | Use all devices whose description contains the string SEAGATE |
BuildRpool c0t0d0 ~INTELSSD,<40000 | Use c0t0d0 and all devices whose description contains INTELSSD and whose size is less than or equal to 40,000 MB |
SetHostname
Takes a single argument and sets the hostname in the running miniroot
environment as well as placing it in /etc/nodename
in the installed
environment.
AutoHostname
Takes one optional argument, the suffix for the automatically generated hostname. Defaults to omnios.
The hostname is calculated based on the mac of the first Ethernet interface.
For example a nic with the following MAC address 03:E7:A4:B6:7B:2A:
AutoHostname
results in a hostname of 03-e7-a4-b6-7b-2a-omnios
.
AutoHostname kayak
results in a hostname of 03-e7-a4-b6-7b-2a-kayak
.
SetTimezone
Updates the value of TZ in /etc/default/init
in the installed
environment. The value should be the name of a timezone information
file in .
EnableDNS
Enable name resolution using DNS for IPv4 and IPv6. The first argument is the default domain. Remaining arguments, if any, will be the list of search domains.
By default, the DNS resolver searches the default domain, so if that’s the only domain you care to search, you need not specify an explicit search path.
Use SetDNS to specify one or more name servers.
For example:
EnableDNS
results only in nsswitch.conf being updated, leaving resolv.conf untouched.
EnableDNS example.com
results in a resolv.conf as follows. Search will use example.com.
domain example.com
search example.com
EnableDNS prod.example.com dev.example.com
results in a resolv.conf as follows. Search will use prod.example.com followed by dev.example.com. In other words, order matters for the search path.
domain prod.example.com
search prod.example.com dev.example.com
See resolv.conf(4) for details.
Additionally, when EnableDNS is specified,
/etc/nsswitch.conf is updated
with “dns” appended to the hosts:
and ipnodes:
line, after files.
SetDNS
Specify one or more servers to use for name resolution.
note: Call EnableDNS
first if you want to specify a default or
search domain. SetDNS implicitly calls EnableDNS without
arguments if no resolv.conf file already exists.
For example:
SetDNS 8.8.8.8 8.8.4.4
results in resolv.conf having the following appended.
nameserver 8.8.8.8
nameserver 8.8.4.4
SetDNS 2001:4860:4860::8888 8.8.8.8
results in resolv.conf having the following appended.
nameserver 2001:4860:4860::8888
nameserver 8.8.8.8
UseDNS
Deprecated as of October 1st, 2014
UseDNS is now a wrapper for backwards compatibility and should not be used; internally it uses EnableDNS and SetDNS.
Postboot
These are commands that get run verbatim and in the order specified upon initial boot of the installed system.
Static IP Config
See the sample config above.
NO_REBOOT
If this is set to a non-null value, the installer will not reboot upon completion. This is helpful if you are debugging an installation problem.