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.
- checksums.yaml +4 -4
- data/lib/bind_docker.rb +60 -5
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2c834293a3535f6ab7401e7b98877797d64fb9d
|
4
|
+
data.tar.gz: b34489ff1de2afee77eb22589b450da2d590c88d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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.
|
24
|
-
|
25
|
-
|
26
|
-
|
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.
|
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: []
|