<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: DNSCMD Kung Fu</title>
	<atom:link href="http://www.edgeblog.net/2008/dnscmd-kung-fu/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.edgeblog.net/2008/dnscmd-kung-fu/</link>
	<description>Notes from the edge</description>
	<lastBuildDate>Tue, 09 Mar 2010 19:19:17 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Russell Jackson</title>
		<link>http://www.edgeblog.net/2008/dnscmd-kung-fu/comment-page-1/#comment-90170</link>
		<dc:creator>Russell Jackson</dc:creator>
		<pubDate>Tue, 23 Dec 2008 00:02:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.edgeblog.net/?p=113#comment-90170</guid>
		<description>You do know this could easily be done with BIND and nsupdate --assuming all
your zones are dynamic... right? In fact I could easily write a far more
readable and maintainable python script that does both the RR and zone creation
with actual error handling and everything. It would be reusable so I wouldn&#039;t
have to rely on error prone obfuscated one liners to boot.

We also store our DNS records in a version control repository where all changes
are audited, tested, and tagged before being pushed out to production. This is
real change _control_. What you&#039;re talking about is change monitoring. You
don&#039;t know about changes until after they wreaked havoc without the benefit of
knowing who did it.

The DNS records are stored in plain text in the VCS with a custom grammar that
keeps the records normalized. We define the hostname -&gt; IP address pairing once
with additional meta-data that identifies what zones the forward and reverse
belong to as well as if it should create static DHCP host entries. Using this
we can generate the zone databases on the fly with triggers from a
configuration management system that detects commits to the repository. The
configuration management system also guarantees --within reason-- that what is
in the repository is what is on the production boxes. If we want another DNS
server, we setup a minimally configured box, point the CMS at it, and ten
minutes later, it&#039;s serving up zones or anything else we need to have it doing.

I can command the entire thing --without ever touching the production boxes by
hand-- with nothing but a text editor, programming environment of choice and a
git/svn client. In fact, with TortoiseSVN, we even have our first-tier user
support staff making changes to the repository. Even if they screw it up, the
changes never make it to production.

You keep talking about the right tool for the job, but if you&#039;re maintaining a
large BIND installation using pico, ssh and for-loops, you&#039;re not following
your own advice. No wonder you like AD.

Frankly, I can&#039;t imagine a scenario where UNIX doesn&#039;t have the right _set_
--not necessarily a single uber one-- of tools for any particular job. The
right-tool-for-the-job mantra is usually just personal bias thinly veiled as
pragmatism. If you like MS junk, fine; keep using it. Your experience is still
only anecdotal.</description>
		<content:encoded><![CDATA[<p>You do know this could easily be done with BIND and nsupdate &#8211;assuming all<br />
your zones are dynamic&#8230; right? In fact I could easily write a far more<br />
readable and maintainable python script that does both the RR and zone creation<br />
with actual error handling and everything. It would be reusable so I wouldn&#8217;t<br />
have to rely on error prone obfuscated one liners to boot.</p>
<p>We also store our DNS records in a version control repository where all changes<br />
are audited, tested, and tagged before being pushed out to production. This is<br />
real change _control_. What you&#8217;re talking about is change monitoring. You<br />
don&#8217;t know about changes until after they wreaked havoc without the benefit of<br />
knowing who did it.</p>
<p>The DNS records are stored in plain text in the VCS with a custom grammar that<br />
keeps the records normalized. We define the hostname -&gt; IP address pairing once<br />
with additional meta-data that identifies what zones the forward and reverse<br />
belong to as well as if it should create static DHCP host entries. Using this<br />
we can generate the zone databases on the fly with triggers from a<br />
configuration management system that detects commits to the repository. The<br />
configuration management system also guarantees &#8211;within reason&#8211; that what is<br />
in the repository is what is on the production boxes. If we want another DNS<br />
server, we setup a minimally configured box, point the CMS at it, and ten<br />
minutes later, it&#8217;s serving up zones or anything else we need to have it doing.</p>
<p>I can command the entire thing &#8211;without ever touching the production boxes by<br />
hand&#8211; with nothing but a text editor, programming environment of choice and a<br />
git/svn client. In fact, with TortoiseSVN, we even have our first-tier user<br />
support staff making changes to the repository. Even if they screw it up, the<br />
changes never make it to production.</p>
<p>You keep talking about the right tool for the job, but if you&#8217;re maintaining a<br />
large BIND installation using pico, ssh and for-loops, you&#8217;re not following<br />
your own advice. No wonder you like AD.</p>
<p>Frankly, I can&#8217;t imagine a scenario where UNIX doesn&#8217;t have the right _set_<br />
&#8211;not necessarily a single uber one&#8211; of tools for any particular job. The<br />
right-tool-for-the-job mantra is usually just personal bias thinly veiled as<br />
pragmatism. If you like MS junk, fine; keep using it. Your experience is still<br />
only anecdotal.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.290 seconds -->
