| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- #!/usr/bin/python
 
- import json
 
- import urllib2
 
- import sys
 
- from jinja2 import Template
 
- try:
 
-     data = json.load(urllib2.urlopen('http://169.254.169.254/latest/user-data'))
 
-     ip = urllib2.urlopen('http://169.254.169.254/latest/meta-data/local-ipv4').read()
 
- except:
 
-     print >> sys.stderr, 'Was not able to connect to the Amazon API'
 
-     sys.exit(2)
 
- zone_template="""
 
- zone "{{user_data['domain']}}" IN {
 
-   type forward;
 
-   forward only;
 
-   forwarders { {{ipaddr}}  port 8600; };
 
- };
 
- """
 
- zt = Template(zone_template)
 
- main_config = open("/etc/bind/zones.consul", "w")
 
- main_config.write(zt.render(user_data=data, ipaddr=ip))
 
- main_config.close()
 
- local_config = open("/etc/bind/named.conf.local", "w")
 
- local_config.write("//Scripted Configure\ninclude \"/etc/bind/zones.consul\";")
 
- local_config.close()
 
- options_template="""
 
- options {
 
-         directory "/var/cache/bind";
 
-         allow-query     { any; };
 
- 	allow-transfer  { localhost; };
 
-         recursion yes;
 
-         allow-recursion { any; };
 
-         forward only;
 
-         forwarders {
 
- {% for forwarder in forwarders %}
 
- 			{{ forwarder }};
 
- {% endfor %}
 
-                 };
 
-         dnssec-validation no;
 
- 	dnssec-enable no;
 
-         auth-nxdomain no;    # conform to RFC1035
 
-         listen-on-v6 { any; };
 
- };
 
- """
 
- ot = Template(options_template)
 
- if 'upstream_dns' in data:
 
-     myfowarders = data['upstream_dns'].split(",")   
 
- else:
 
-     myfowarders = ['8.8.8.8', '8.8.4.4']
 
- options_config = open("/etc/bind/named.conf.options", "w")
 
- options_config.write(ot.render(forwarders=myfowarders))
 
- options_config.close()
 
 
  |