class BindDocker
Constants
- CONTAINER_NAME
- IMAGE
Public Class Methods
add_zonefile(zonefile_path)
click to toggle source
# File lib/bind_docker.rb, line 38 def self.add_zonefile zonefile_path @@zonefiles.push File.new(zonefile_path) end
build_docker_file(tmp_dir)
click to toggle source
# File lib/bind_docker.rb, line 50 def self.build_docker_file tmp_dir File.open(tmp_dir + "/Dockerfile", 'w') do |file| file.write(docker_preamble) @@zonefiles.each do |zonefile| file.write("COPY #{filename(zonefile)} /var/cache/bind/#{filename(zonefile)}\n") end file.write("COPY #{filename(@@named_conf)} /etc/bind/#{filename(@@named_conf)}\n") file.close end end
clear_zonfiles()
click to toggle source
# File lib/bind_docker.rb, line 42 def self.clear_zonfiles @@zonefiles.clear end
docker_ip()
click to toggle source
# File lib/bind_docker.rb, line 84 def self.docker_ip if (/darwin/ =~ RUBY_PLATFORM) `docker-machine ip default`.strip else "127.0.0.1" end end
docker_preamble()
click to toggle source
# File lib/bind_docker.rb, line 61 def self.docker_preamble <<-HEREDOC FROM phusion/baseimage:0.9.18 MAINTAINER storage-solutions@ctl.io ENV DATA_DIR=/data \ BIND_USER=bind RUN rm -rf /etc/apt/apt.conf.d/docker-gzip-indexes \ && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y bind9 dnsutils \ && rm -rf /var/lib/apt/lists/* EXPOSE 53/udp EXPOSE 53/tcp VOLUME ["${DATA_DIR}"] CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf"] HEREDOC end
filename(file)
click to toggle source
# File lib/bind_docker.rb, line 14 def self.filename file File.split(file)[1] end
named_conf(named_conf_path)
click to toggle source
# File lib/bind_docker.rb, line 46 def self.named_conf named_conf_path @@named_conf = File.new(named_conf_path) end
resolve(address)
click to toggle source
# File lib/bind_docker.rb, line 34 def self.resolve address Resolv.getaddress(address).to_s end
resolve_bucket_by_region(bucket, tld)
click to toggle source
# File lib/bind_docker.rb, line 92 def self.resolve_bucket_by_region bucket, tld begin Resolv.getaddress("#{bucket}.#{tld}").to_s rescue Resolv::ResolvError :nxdomain end end
run!()
click to toggle source
# File lib/bind_docker.rb, line 18 def self.run! Dir.mktmpdir do |dir| FileUtils.cp @@named_conf, dir, {} FileUtils.cp @@zonefiles, dir, {} build_docker_file dir Dir.chdir(dir) do `docker build -t #{IMAGE} .` `docker run -d -p 1053:53/udp -p 1053:53/tcp --name=#{CONTAINER_NAME} #{IMAGE}` end end end
stop!()
click to toggle source
# File lib/bind_docker.rb, line 30 def self.stop! `docker rm -f #{CONTAINER_NAME} > /dev/null 2>&1` end