aboutsummaryrefslogtreecommitdiff
path: root/build/blog/2015-08-25-automated-os-x-provisioning.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--build/blog/2015-08-25-automated-os-x-provisioning.html52
1 files changed, 52 insertions, 0 deletions
diff --git a/build/blog/2015-08-25-automated-os-x-provisioning.html b/build/blog/2015-08-25-automated-os-x-provisioning.html
new file mode 100644
index 00000000..cc0881db
--- /dev/null
+++ b/build/blog/2015-08-25-automated-os-x-provisioning.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8"/>
+<meta content="pandoc" name="generator"/>
+<meta content="Zhiming Wang" name="author"/>
+<meta content="2015-08-25T08:16:44-07:00" name="date"/>
+<title>Automated OS X provisioning</title>
+<link href="/img/apple-touch-icon-152.png" rel="apple-touch-icon-precomposed"/>
+<meta content="#FFFFFF" name="msapplication-TileColor"/>
+<meta content="/img/favicon-144.png" name="msapplication-TileImage"/>
+<meta content="width=device-width, initial-scale=1" name="viewport"/>
+<link href="/css/normalize.min.css" media="all" rel="stylesheet" type="text/css"/>
+<link href="/css/theme.css" media="all" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="archival-notice">This blog has been archived.<br/>Visit my home page at <a href="https://zhimingwang.org">zhimingwang.org</a>.</div>
+<nav class="nav">
+<a class="nav-icon" href="/" title="Home"><!--blog icon--></a>
+<a class="nav-title" href="/"><!--blog title--></a>
+<a class="nav-author" href="https://github.com/zmwangx" target="_blank"><!--blog author--></a>
+</nav>
+<article class="content">
+<header class="article-header">
+<h1 class="article-title">Automated OS X provisioning</h1>
+<div class="article-metadata">
+<time class="article-timestamp" datetime="2015-08-25T08:16:44-07:00">August 25, 2015</time>
+</div>
+</header>
+<p>After quite a bit of work, I finally have a decent OS X provisioning system, capable of provisioning a blank OS X install (with Xcode and CLT) for development and everyday life.</p>
+<p>Here it is: <a href="https://github.com/zmwangx/dotfiles/blob/master/provision"><code>zmwangx/dotfiles/provision</code></a>. In case the path changes in the future and invalidates the aforementioned URL, <a href="https://github.com/zmwangx/dotfiles/blob/d8e20b731583d69b380d422c8788f61cd4a4e211/provision">here</a> is the archived provisioning script at the current master. Of course the provisioning system is not a single script; it reads and executes modules from a <a href="https://github.com/zmwangx/dotfiles/tree/master/provision.d"><code>provision.d</code></a> directory, which in turn links into other specialized parts of the system.</p>
+<p>Selling points:</p>
+<ul>
+<li><p>Highly modular due to the <code>provision.d</code> structure. New provisioning scripts for specialized tools can be added at any time without complicating the rest of the system.</p></li>
+<li><p>Graceful failure and easy error recovery. For most failures, running the provision once more fixes the issues. This is especially helpful when GitHub get DDoS'ed and loads of downloads fail, e.g., <a href="https://web.archive.org/web/20150825150044/https://status.github.com/messages">last night</a>, when I was sleeping with the provisioning system hard at work.</p></li>
+<li><p>Very nice, colored console messages. Of course you'd expect that when half of the code is devoted to messaging...</p></li>
+</ul>
+<p>Thus far tested on OS X 10.10 and 10.11. Works pretty well. Of course OS X provisioning (with so many impossible-to-automate tasks) is still a hell lot harder than Linux provisioning, but hopefully this system will safe me a considerable amount of time and trouble during my at-least-twice-a-year clean OS installation and beta testing in VMs.</p>
+<div class="figure">
+<a href="/img/20150825-osx-provisioning-system.png" target="_blank"><img alt="provision at work. Provisioning a blank machine is probably the only time I need Terminal.app." src="/img/20150825-osx-provisioning-system.png"/></a>
+<p class="caption"><code>provision</code> at work. Provisioning a blank machine is probably the only time I need Terminal.app.</p>
+</div>
+</article>
+<hr class="content-separator"/>
+<footer class="footer">
+<span class="rfooter">
+<a class="rss-icon" href="/rss.xml" target="_blank" title="RSS feed"><!--RSS feed icon--></a><a class="atom-icon" href="/atom.xml" target="_blank" title="Atom feed"><!--Atom feed icon--></a><a class="cc-icon" href="https://creativecommons.org/licenses/by/4.0/" target="_blank" title="Released under the Creative Commons Attribution 4.0 International license."><!--CC icon--></a>
+<a href="https://github.com/zmwangx" target="_blank">Zhiming Wang</a>
+</span>
+</footer>
+</body>
+</html>