As part of the development of Mac OS X, Apple has also developed Mac OS X Server as a way to provide access to both additional services on OS X and the management tools needed to administrate those services. While Mac OS X and Mac OS X Server used to be separate operating systems, Apple combined them into one release re-branded as OS X and moved the server-specific services and management tools into an OS X Server application available from the Mac App Store.
As part of the move to an application-based installation process, there was a capability removed from OS X Server: The ability to automate its setup entirely from the command line.
In order to run the initial setup of OS X Server, the following manually-run process was needed:
1. Log into the Mac using an account with administrator rights
2. Launch /Applications/Server.app
3. Agree to the OS X Server license
4. Provide administrator authorization when prompted.
5. The initial setup of OS X Server would then proceed.
For Mac sysadmins who needed to set up multiple instances of OS X Server, having this manual step involved slowed the setup process down considerably. To find out why this part needed to run manually, while at WWDC 2015 I asked the relevant Apple engineer why this was the case. The response was that the OS X Server license needed to be agreed to, to which I mentioned that Xcode had a similar requirement but that there was a way to agree to the license from the command line. The Apple engineer in question took that feedback and said it was a valid point.
At this point, the story skips forward to Brad Chapman discovering a new and undocumented way to agree to the license from the command line in OS X Server 5.0.x. Charles Edge built on that discovery and created an expect script to handle agreeing to the license and providing admin authorization. Charles’s method incorporated the use of an existing admin user’s username and password in the script, so in turn I’ve built on Charles’s work to create a completely automated setup script which does the following:
- Create a temporary user with a randomly generated password
- Give the temporary user admin privileges
- Run the initial setup and configuration of OS X Server’s services.
- Delete the temporary user
As part of the initial setup process:
- Agree to the license
- Authorize the setup process using the temporary user’s username and password
For more details, see below the jump.