Non-interactive Installation of SmartOS
SmartOS installation can be automated to be either fully or partially non-interactive. This is similar to kickstart, jumpstart, installerconfig, or other unattended installation methods used by many operating systems.
On SmartOS this is done with an answers.json
file. The answer file must be
placed at private/answers.json
of the installation media and be valid JSON.
An example answers.json
file looks like this:
{
"config_console": true,
"skip_instructions": true,
"simple_headers": true,
"admin_mac": "52:54:00:2f:61:34",
"admin_ip": "dhcp",
"headnode_default_gateway": "none",
"dns_resolver1": "8.8.8.8",
"dns_resolver2": "8.8.4.4",
"dns_search": "example.com",
"ntp_host": "0.smartos.pool.ntp.org",
"skip_ntp_check": true,
"zpool_layout": "default",
"zpool_confirm_layout": "yes",
"bootpool": "none",
"install_pkgsrc": "no",
"root_password": "secret",
"hostname": "brainiac",
"skip_final_confirm": true
}
Supported Keys¶
The following keys are meaningful in an answer file on SmartOS. Keys other than the ones listed will be ignored. If a key is missing, setup will prompt for an answer.
After setup is finished the system will automatically reboot.
Valid config keys not listed here (e.g., additional NIC tags, VLANs, IPv6,
etc.) must be done post-setup in /usbkey/config
.
config_console¶
This key must be present to indicate non-interactive install is desired. If this key is missing, setup will silently block waiting for the user to press Enter. This can be useful if you want the system to boot up and be ready to install, but wait for an operator before proceeding.
skip_instructions¶
If set to true
setup will not display instructional text for each section of
setup. If this key is not set true
setup will block waiting for user input
before beginning.
simple_headers¶
If set to true
setup will display a brief header and will not clear the
display between setup sections.
admin_mac¶
This must be a valid MAC address of a NIC that is attached to the system. If an invalid value is supplied the setup will fail.
admin_ip¶
This must be either dhcp
or a valid IP address in dotted decimal form
(e.g., 198.51.100.10
)
admin_netmask¶
If admin_ip
is set to dhcp
, this key is not needed.
This must be a valid subnet mask in dotted decimal form (e.g., 255.255.255.0
),
not a prefix length (e.g., /24
).
headnode_default_gateway¶
This key is required, even if admin_ip
is set to dhcp
.
If admin_ip
is set to dhcp
then this should be set to none
.
If admin_ip
is set to an IP address then this must be set to the correct
gateway IP address.
dns_resolver1, dns_resolver2¶
These must be valid IP addresses that will act as recursive resolvers. DNS resolvers will be checked for connectivity.
dns_search¶
This should be a valid domain name.
ntp_host¶
This is either an IP address or hostname of an NTP server. The NTP server will
be checked for connectivity with ntpdate
. Failure to contact the NTP server
will not fail setup.
skip_ntp_check¶
If this is set to true
then the NTP server check will be skipped. The
ntp.org pool is run by volunteers, and sometimes individual IPs will be
non-responsive. Skipping this check will avoid a delay in those cases.
zpool_layout¶
This determines the zpool layout using the disklayout
tool. You can use
disklayout
on a running SmartOS system to preview the layout that will be
generated for various disk configurations.
The system will attempt to intelligently assign storage, spare, log, and cache
devices automatically based on the specified layout type. See
disklayout(8)
for more information.
Not all values supported by disklayout
are valid during setup. The only valid
values recognizd by setup are:
default: The default layout suggested by SmartOS will be used. The actual layout will vary depending on the number and type of storage devices attached.
mirror: Requires a minimum of two devices. SmartOS will do its best to pair up devices into an array of mirrors. E.g., if there are four devices then there will be two, two-way mirrors. If there are six devices there will be three, two-way mirrors. If there is an odd number of devices then one device will be a spare.
raidz2: Requires a minimum of five devices. SmartOS will do its best to create an array of raidz2 vdevs. If there are sufficient devices, multiple raidz2 vdevs will be created.
manual: While technically a valid value, this will cause the installer
to drop to a shell for the operator to create the pool using zpool create
.
zpool_confirm_layout¶
This must be set to yes
or setup will block waiting for the user to confirm
the layout.
bootpool¶
This can be either none
, or zones
. Other values are legal, but a boot pool
other than zones
must be created manually.
install_pkgsrc¶
If set to true
or yes
, the pkgsrc-setup command will be run and pkgsrc
will be installed during setup.
root_password¶
This string will be used to generate a password hash added to the shadow
file for the root
user.
Note: Leaving the answer.json
file on the USB with the root_password
will expose the password to anyone who has access to the file.
hostname¶
The system hostname.
skip_final_confirm¶
If set to true
, setpu will skip the final confirmation. If missing or set to
any other value setup will display a summary and prompt for confirmation before
anything is applied.