This project provides “provisioning” scripts for macOS virtual machines running on platforms supporting cloud-init/nocloud or OpenNebula (more platforms may be supported in the future).
WIP
This platform reads parameters from files provided on an ISO 9660 (or VFAT) filesystem (typically a virtual CD-ROM) labeled cidata, specifically from the meta-data file and the user-data file in cloud-config format.
By default, $ADMIN_USER is mapped to the first user in the users directive or to the directive user (in this order of precedence).
Sets the hostname to $FQDN or, if not provided, $SET_HOSTNAME.
It should contain only alphanumeric ASCII characters, a hyphen and period ([a-zA-Z0-9.-]), all other characters will be replaced with a hyphen (-).
Changes the system timezone to $TIMEZONE (e.g. Europe/Prague, UTC), if provided.
Note: This script is fully supported only on OpenNebula. If you use Cloud-init/nocloud, you must specify params_mapping in etc/macos-init.conf according to your environment.
Configures network interfaces (using networksetup).
It supports the following variables:
-
$ETH<n>_MAC— Used to find the correct interface by MAC address. -
$ETH<n>_IPV4_METHOD— Method how to configure IPv4 on the interface. Supported options:-
static— static configuration, -
dhcp(ordhcp4) — automatic using DHCP.
-
-
$ETH<n>_IPV4_ADDRESS— IPv4 address for the interface (required forstatic). -
$ETH<n>_IPV4_MASK— IPv4 network mask for the interface (required forstatic). -
$ETH<n>_IPV4_GATEWAY— Default IPv4 gateway for the interface (required forstatic). -
$ETH<n>_IPV6_METHOD— Method how to configure IPv6 on the interface. Supported options:-
static(orstatic6) — static configuration, -
auto(ordhcp,dhcp6,ipv6_slaac) — automatic configuration (using SLAAC or DHCPv6), -
disable— disables IPv6 on the interface.
-
-
$ETH<n>_IPV6_ADDRESS— IPv6 address for the interface (required forstatic). -
$ETH<n>_IPV6_PREFIX— IPv6 prefix for the interface (default is/64). -
$ETH<n>_IPV6_GATEWAY— Default IPv6 gateway for the interface (required forstatic). -
$ETH<n>_DNS_SERVERS— DNS servers (as space-separated addressess). -
$ETH<n>_DNS_SEARCH— The domain search list.
Creates an user account named $ADMIN_USER with the admin role and shell $ADMIN_SHELL.
If $ADMIN_USER is not provided, this script is skipped.
If $ADMIN_SSH_KEYS with SSH public key(s) is provided, adds them to authorized_keys of the user specified in $ADMIN_USER.
Extends the root filesystem (container) to the maximum disk capacity. Only APFS is currently supported.
brew tap jirutka/macos-init https://github.com/jirutka/macos-init
brew install macos-init
sudo brew services start macos-initcurl https://github.com/jirutka/macos-init/archive/v0.1.9/macos-init-0.1.9.tar.gz | tar -xz
cd macos-init-0.1.9
sudo make install
sudo launchctl load /Library/LaunchDaemons/cz.jirutka.macos-init.plistThis project is licensed under MIT License.