bind_docker 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/bind_docker.rb +60 -5
  3. metadata +15 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b1d75862f45fa14568b6c732ca478c3149619cd
4
- data.tar.gz: 9c6a559722f34301e284411bb1e43d0b1161698d
3
+ metadata.gz: c2c834293a3535f6ab7401e7b98877797d64fb9d
4
+ data.tar.gz: b34489ff1de2afee77eb22589b450da2d590c88d
5
5
  SHA512:
6
- metadata.gz: 21239c9fd218daeff95bd861040268bea1b42eea35318687434e4cac0fe80bed505abae69767ea1bd9e7bc2ad1502f11b80940c782f53532bc00c818622fddf3
7
- data.tar.gz: e2169f4993cf2d1c04dc63c409d3ff0de46afe516e78b29a9553760ef29e4ac9ae31f36f9f3b65a4a6f0bfa419e58c3ffb2d8c2e97b904309185c6cd5ccadc74
6
+ metadata.gz: b396aacdc800d2bdec92d79e4292085c8b299d4e8b042439e9c8b1aa53a158e1b43316129531396099372adb5a898306d9b79af758dd9639b65208656af9bd9e
7
+ data.tar.gz: cba372d0ba5082199ec2c538cf2d08fcf447c3a1297018319838f74cf14977a7ea0a45fbb4c729fdeb37712defe13b8588a4b6716e9baadc4c40b2450e81f28f
data/lib/bind_docker.rb CHANGED
@@ -1,15 +1,30 @@
1
1
  require 'json'
2
2
  require 'dnsruby'
3
3
  require 'resolv-replace'
4
+ require 'fileutils'
4
5
  include Dnsruby
5
6
 
6
7
  class BindDocker
7
8
 
9
+ @@zonefiles = []
10
+ @@named_conf = nil
8
11
  IMAGE='clcloud/dnsuats'
9
12
  CONTAINER_NAME='dns-funtime'
10
13
 
14
+ def self.filename file
15
+ File.split(file)[1]
16
+ end
17
+
11
18
  def self.run!
12
- `docker run -d -p 1053:53/udp -p 1053:53/tcp --name=#{CONTAINER_NAME} #{IMAGE}`
19
+ Dir.mktmpdir do |dir|
20
+ FileUtils.cp @@named_conf, dir, {}
21
+ FileUtils.cp @@zonefiles, dir, {}
22
+ build_docker_file dir
23
+ Dir.chdir(dir) do
24
+ `docker build -t #{IMAGE} .`
25
+ `docker run -d -p 1053:53/udp -p 1053:53/tcp --name=#{CONTAINER_NAME} #{IMAGE}`
26
+ end
27
+ end
13
28
  end
14
29
 
15
30
  def self.stop!
@@ -20,12 +35,52 @@ class BindDocker
20
35
  Resolv.getaddress(address).to_s
21
36
  end
22
37
 
23
- def self.build zonefiles_glob, named_conf
24
- Dir.chdir("spec/dns_files")
25
- `docker build -t #{IMAGE} --build-arg zonefiles_glob=#{zonefiles_glob} --build-arg named_conf=#{named_conf} .`
26
- Dir.chdir("../..")
38
+ def self.add_zonefile zonefile_path
39
+ @@zonefiles.push File.new(zonefile_path)
40
+ end
41
+
42
+ def self.clear_zonfiles
43
+ @@zonefiles.clear
44
+ end
45
+
46
+ def self.named_conf named_conf_path
47
+ @@named_conf = File.new(named_conf_path)
48
+ end
49
+
50
+ def self.build_docker_file tmp_dir
51
+ File.open(tmp_dir + "/Dockerfile", 'w') do |file|
52
+ file.write(docker_preamble)
53
+ @@zonefiles.each do |zonefile|
54
+ file.write("COPY #{filename(zonefile)} /var/cache/bind/#{filename(zonefile)}")
55
+ end
56
+ file.write("COPY #{filename(@@named_conf)} /etc/bind/#{filename(@@named_conf)}")
57
+ file.close
58
+ end
27
59
  end
28
60
 
61
+ def self.docker_preamble
62
+ <<-HEREDOC
63
+ FROM phusion/baseimage:0.9.18
64
+ MAINTAINER storage-solutions@ctl.io
65
+
66
+ ENV DATA_DIR=/data \
67
+ BIND_USER=bind
68
+
69
+
70
+ RUN rm -rf /etc/apt/apt.conf.d/docker-gzip-indexes \
71
+ && apt-get update \
72
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y bind9 dnsutils \
73
+ && rm -rf /var/lib/apt/lists/*
74
+
75
+ EXPOSE 53/udp
76
+ EXPOSE 53/tcp
77
+ VOLUME ["${DATA_DIR}"]
78
+ CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf"]
79
+
80
+ HEREDOC
81
+ end
82
+
83
+
29
84
  def self.docker_ip
30
85
  if (/darwin/ =~ RUBY_PLATFORM)
31
86
  docker_machine_info = JSON.parse `docker-machine inspect default`
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bind_docker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Haggard
@@ -40,6 +40,20 @@ dependencies:
40
40
  - - ~>
41
41
  - !ruby/object:Gem::Version
42
42
  version: '1.58'
43
+ - !ruby/object:Gem::Dependency
44
+ name: fileutils
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '0.7'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: '0.7'
43
57
  description: Gem to create a docker container running bind9, used with rpsec for UATs
44
58
  email: brihagg@gmail.com
45
59
  executables: []