瀏覽代碼

setup for the possibility of running a bind server as well

Chris Mague 8 年之前
父節點
當前提交
46de30000c
共有 5 個文件被更改,包括 70 次插入0 次删除
  1. 28 0
      files/setup_dns_zone
  2. 11 0
      files/supervisord_bind
  3. 29 0
      tasks/bind_setup.yml
  4. 1 0
      tasks/main.yml
  5. 1 0
      vars/main.yml

+ 28 - 0
files/setup_dns_zone

@@ -0,0 +1,28 @@
+#!/usr/bin/python
+
+import json
+import urllib2
+import sys
+from jinja2 import Template
+
+URL = 'http://169.254.169.254/latest/user-data'
+
+try:
+    data = json.load(urllib2.urlopen('http://169.254.169.254/latest/user-data'))
+    ip = urllib2.urlopen('http://169.254.169.254/latest/user-data').rstrip()
+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()

+ 11 - 0
files/supervisord_bind

@@ -0,0 +1,11 @@
+[program:bind9]
+command=/bin/bash -c "/usr/local/bin/setup_dns_zone; /usr/sbin/named -f -u bind"
+directory=/tmp
+numprocs=1
+stdout_logfile=/var/log/bind9.log
+stderr_logfile=/var/log/bind9_error.log
+autostart=true
+autorestart=true
+startsecs=10
+stopwaitsecs=10
+priority=1

+ 29 - 0
tasks/bind_setup.yml

@@ -0,0 +1,29 @@
+---
+
+- name: Install Bind 9
+  apt: 
+    name: bind9
+
+- name: Stop the Bind 9 service to run with supervisor
+  service:
+    name: bind9
+    stage: stopped
+
+- name: remove the startup file
+  file:
+    path: /lib/systemd/system/bind9.service
+    state: absent
+
+- name: Bind9 Config generator
+  copy:
+    src: setup_dns_zone
+    dest: /usr/local/bin/setup_dns_zone
+    mode: "0755"
+
+- name: Setup bind9 supervisor config
+  copy:
+    src: supervisord_bind
+    dest: /etc/supervisor/conf.d/bind.conf
+    owner: root
+    group: root
+    mode: "0755"

+ 1 - 0
tasks/main.yml

@@ -2,3 +2,4 @@
 # tasks file for shokunin.ansible-cloud-consul
 - include: binary_install.yml
 - include: cloud_configure.yml
+- { include: bind_setup.yml, when: consul_server_bind }

+ 1 - 0
vars/main.yml

@@ -3,3 +3,4 @@
 cloud_consul_version: 0.7.2
 cloud_consul_download_dir: /var/tmp/consul_dl
 cloud_consul_install_dir: /opt/consul
+consul_server_bind: false