bind_docker 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []