palletjack-tools 0.1.3 → 0.2.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/exe/create_domain +25 -23
- data/exe/create_ipv4_interface +17 -14
- data/exe/create_system +18 -14
- data/exe/dump_pallet +23 -9
- data/exe/palletjack2knot +126 -96
- data/exe/palletjack2pxelinux +26 -22
- data/exe/palletjack2unbound +3 -1
- metadata +29 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2437860b1eb4b4f167a5dff5af46472a057aa9b5
|
4
|
+
data.tar.gz: 2be532d8a2c4560506a9bb39a8ad8fa79d8a1126
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c39dbb871788b5b5530c23f772bea8e4d1f1caf6a0a38c58b7734f16dacd37460c73586f7b8876088d4a988cd79a1ccc9140cab12de67a4f76f1ce08527bc65
|
7
|
+
data.tar.gz: f7a4515815c3452a7b0f5d514f96127dc901d44a66a8d35ccc050ef54b9952e45fce3bb84aae1ab9ac7bcff220c5419a43a1fbed7fc966dfd6f48293eaad72af
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/exe/create_domain
CHANGED
@@ -23,30 +23,32 @@ Create domain and ipv4_network objects in a warehouse"
|
|
23
23
|
required_option :domain
|
24
24
|
required_option :network
|
25
25
|
end
|
26
|
-
end
|
27
|
-
|
28
|
-
CreateDomain.run do
|
29
|
-
|
30
|
-
# Create the IPv4 Network object
|
31
26
|
|
32
|
-
|
33
|
-
|
34
|
-
|
27
|
+
def output
|
28
|
+
# Create the IPv4 Network object
|
29
|
+
|
30
|
+
pallet_dir 'ipv4_network', :network
|
31
|
+
pallet_box 'ipv4_network', :network, 'dhcp' do
|
32
|
+
{ net:{ dhcp:{ 'tftp-server' => '', 'boot-file' => '' } } }
|
33
|
+
end
|
34
|
+
pallet_box 'ipv4_network', :network, 'identity' do
|
35
|
+
{ net:{ ipv4:{ gateway:'' },
|
36
|
+
dns:{ resolver:[''] } } }
|
37
|
+
end
|
38
|
+
|
39
|
+
# Create the DNS domain object
|
40
|
+
|
41
|
+
pallet_dir 'domain', :domain
|
42
|
+
pallet_box 'domain', :domain, 'dns' do
|
43
|
+
{ net:{ dns:{ ns:[''], 'soa-ns' => '', 'soa-contact' => '' } } }
|
44
|
+
end
|
45
|
+
pallet_box 'domain', :domain, 'services' do
|
46
|
+
{ net:{ service:{ syslog:[{address:'', port:'514', protocol:'udp' } ] } } }
|
47
|
+
end
|
48
|
+
pallet_links 'domain', :domain, 'ipv4_network' => ['ipv4_network', :network]
|
35
49
|
end
|
36
|
-
|
37
|
-
{ net:{ ipv4:{ gateway:'' },
|
38
|
-
dns:{ resolver:[''] } } }
|
39
|
-
end
|
40
|
-
|
41
|
-
# Create the DNS domain object
|
42
|
-
|
43
|
-
pallet_dir 'domain', :domain
|
44
|
-
pallet_box 'domain', :domain, 'dns' do
|
45
|
-
{ net:{ dns:{ ns:[''], 'soa-ns' => '', 'soa-contact' => '' } } }
|
46
|
-
end
|
47
|
-
pallet_box 'domain', :domain, 'services' do
|
48
|
-
{ net:{ service:{ syslog:[{address:'', port:'514', protocol:'udp' } ] } } }
|
49
|
-
end
|
50
|
-
pallet_links 'domain', :domain, 'ipv4_network' => ['ipv4_network', :network]
|
50
|
+
end
|
51
51
|
|
52
|
+
if CreateDomain.standalone?(__FILE__)
|
53
|
+
CreateDomain.run
|
52
54
|
end
|
data/exe/create_ipv4_interface
CHANGED
@@ -29,23 +29,26 @@ Create phy_nic and ipv4_interface objects in a warehouse"
|
|
29
29
|
required_option :addr
|
30
30
|
required_option :network
|
31
31
|
end
|
32
|
-
end
|
33
32
|
|
34
|
-
|
33
|
+
def output
|
34
|
+
# Create Physical NIC object
|
35
35
|
|
36
|
-
|
36
|
+
pallet_dir 'phy_nic', :mac
|
37
|
+
pallet_box 'phy_nic', :mac, 'identity' do
|
38
|
+
{ net:{ layer2:{ name:'' } } }
|
39
|
+
end
|
37
40
|
|
38
|
-
|
39
|
-
pallet_box 'phy_nic', :mac, 'identity' do
|
40
|
-
{ net:{ layer2:{ name:'' } } }
|
41
|
-
end
|
41
|
+
# Create IPv4 Interface object
|
42
42
|
|
43
|
-
|
43
|
+
pallet_dir 'ipv4_interface', :addr
|
44
|
+
pallet_links 'ipv4_interface', :addr,
|
45
|
+
'ipv4_network' => ['ipv4_network', :network],
|
46
|
+
'domain' => ['domain', :domain],
|
47
|
+
'phy_nic' => ['phy_nic', :mac],
|
48
|
+
'system' => ['system', :system]
|
49
|
+
end
|
50
|
+
end
|
44
51
|
|
45
|
-
|
46
|
-
|
47
|
-
'ipv4_network' => ['ipv4_network', :network],
|
48
|
-
'domain' => ['domain', :domain],
|
49
|
-
'phy_nic' => ['phy_nic', :mac],
|
50
|
-
'system' => ['system', :system]
|
52
|
+
if CreateIPv4Interface.standalone?(__FILE__)
|
53
|
+
CreateIPv4Interface.run
|
51
54
|
end
|
data/exe/create_system
CHANGED
@@ -26,20 +26,24 @@ Create system objects in a warehouse"
|
|
26
26
|
required_option :os, :netinstall
|
27
27
|
exclusive_options :os, :netinstall
|
28
28
|
end
|
29
|
-
end
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
36
|
-
pallet_links 'system', :system, 'domain' => ['domain', :domain]
|
37
|
-
pallet_links 'system', :system,
|
38
|
-
if options[:os]
|
39
|
-
{ 'os' => ['os', :os], 'netinstall' => [] }
|
40
|
-
elsif options[:netinstall]
|
41
|
-
{ 'os' => [], 'netinstall' => ['netinstall', :netinstall] }
|
42
|
-
else
|
43
|
-
abort('Both --os and --netinstall were nil; should not happen!')
|
30
|
+
def output
|
31
|
+
pallet_dir 'system', :system
|
32
|
+
pallet_box 'system', :system, 'role' do
|
33
|
+
{ system:{ role:[ '' ] } }
|
44
34
|
end
|
35
|
+
pallet_links 'system', :system, 'domain' => ['domain', :domain]
|
36
|
+
pallet_links 'system', :system,
|
37
|
+
if options[:os]
|
38
|
+
{ 'os' => ['os', :os], 'netinstall' => [] }
|
39
|
+
elsif options[:netinstall]
|
40
|
+
{ 'os' => [], 'netinstall' => ['netinstall', :netinstall] }
|
41
|
+
else
|
42
|
+
abort('Both --os and --netinstall were nil; should not happen!')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
if CreateSystem.standalone?(__FILE__)
|
48
|
+
CreateSystem.run
|
45
49
|
end
|
data/exe/dump_pallet
CHANGED
@@ -22,6 +22,16 @@ pallets of the specified type."
|
|
22
22
|
parser.on('-t TYPE', '--type TYPE',
|
23
23
|
'type (default "system")',
|
24
24
|
String) {|type| options[:type] = type }
|
25
|
+
|
26
|
+
options[:match_name] = :leaf_name
|
27
|
+
parser.on('-f', '--[no-]full-name',
|
28
|
+
'match full_name of pallets instead of leaf_name'
|
29
|
+
) {|maybe| options[:match_name] = if maybe
|
30
|
+
:full_name
|
31
|
+
else
|
32
|
+
:leaf_name
|
33
|
+
end
|
34
|
+
}
|
25
35
|
end
|
26
36
|
|
27
37
|
# Dump the yaml contents of all pallets given to STDOUT
|
@@ -35,16 +45,20 @@ pallets of the specified type."
|
|
35
45
|
puts p.to_yaml
|
36
46
|
end
|
37
47
|
end
|
38
|
-
end
|
39
48
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
49
|
+
def output
|
50
|
+
# Since the Tool framework uses destructive opts.parse!, all options
|
51
|
+
# were removed from argv, leaving just the names to search for.
|
52
|
+
if argv.empty?
|
53
|
+
dump_pallets jack[kind: options[:type]]
|
54
|
+
else
|
55
|
+
argv.each do |name|
|
56
|
+
dump_pallets jack[kind: options[:type], options[:match_name] => name]
|
57
|
+
end
|
48
58
|
end
|
49
59
|
end
|
50
60
|
end
|
61
|
+
|
62
|
+
if DumpPallet.standalone?(__FILE__)
|
63
|
+
DumpPallet.run
|
64
|
+
end
|
data/exe/palletjack2knot
CHANGED
@@ -37,134 +37,164 @@ Write DNS server zone files from a Palletjack warehouse"
|
|
37
37
|
}
|
38
38
|
"
|
39
39
|
end
|
40
|
-
end
|
41
40
|
|
42
|
-
|
43
|
-
|
41
|
+
# Generate and store forward zone data for a Pallet Jack domain
|
42
|
+
# object.
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
serial = Time.now.utc.to_i
|
44
|
+
def process_forward_zone(domain)
|
45
|
+
absolute_domain_name = "#{domain['net.dns.domain']}."
|
48
46
|
|
49
|
-
|
50
|
-
conf_file << git_header('palletjack2knot')
|
47
|
+
zone = DNS::Zone.new
|
51
48
|
|
52
|
-
|
53
|
-
|
49
|
+
zone.origin = absolute_domain_name
|
50
|
+
zone.ttl = domain['net.dns.ttl']
|
54
51
|
|
55
|
-
|
52
|
+
zone.soa.serial = @serial
|
53
|
+
zone.soa.label = zone.origin
|
54
|
+
zone.soa.nameserver = domain['net.dns.soa-ns']
|
55
|
+
zone.soa.email = "#{domain['net.dns.soa-contact']}.".sub('@', '.')
|
56
56
|
|
57
|
-
|
58
|
-
|
57
|
+
if domain['net.dns.mx']
|
58
|
+
domain['net.dns.mx'].each do |server|
|
59
|
+
mx = DNS::Zone::RR::MX.new
|
60
|
+
mx.label = absolute_domain_name
|
61
|
+
mx.priority = server['priority']
|
62
|
+
mx.exchange = server['server']
|
63
|
+
zone.records << mx
|
64
|
+
end
|
65
|
+
end
|
59
66
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
67
|
+
domain['net.dns.ns'].each do |address|
|
68
|
+
ns = DNS::Zone::RR::NS.new
|
69
|
+
ns.label = absolute_domain_name
|
70
|
+
ns.nameserver = address
|
71
|
+
zone.records << ns
|
72
|
+
end
|
64
73
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
zone.records << mx
|
72
|
-
end
|
74
|
+
if domain['net.dns.cname']
|
75
|
+
domain['net.dns.cname'].each do |name, target|
|
76
|
+
cname = DNS::Zone::RR::CNAME.new
|
77
|
+
cname.label = name
|
78
|
+
cname.domainname = target
|
79
|
+
zone.records << cname
|
73
80
|
end
|
81
|
+
end
|
74
82
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
83
|
+
if domain['net.dns.srv']
|
84
|
+
domain['net.dns.srv'].each do |service|
|
85
|
+
srv = DNS::Zone::RR::SRV.new
|
86
|
+
srv.label = "_#{service['service']}._#{service['protocol']}"
|
87
|
+
srv.target = service['target']
|
88
|
+
srv.port = service['port']
|
89
|
+
service['priority'] ||= 0
|
90
|
+
srv.priority = service['priority']
|
91
|
+
service['weight'] ||= 0
|
92
|
+
srv.weight = service['weight']
|
93
|
+
zone.records << srv
|
80
94
|
end
|
95
|
+
end
|
96
|
+
|
97
|
+
domain.children(kind:'ipv4_interface') do |interface|
|
98
|
+
a = DNS::Zone::RR::A.new
|
99
|
+
a.label = interface['net.dns.name']
|
100
|
+
a.address = interface['net.ipv4.address']
|
101
|
+
zone.records << a
|
81
102
|
|
82
|
-
if
|
83
|
-
|
103
|
+
if interface['net.dns.alias']
|
104
|
+
interface['net.dns.alias'].each do |label|
|
84
105
|
cname = DNS::Zone::RR::CNAME.new
|
85
|
-
cname.label =
|
86
|
-
cname.domainname =
|
106
|
+
cname.label = label
|
107
|
+
cname.domainname = interface['net.dns.name']
|
87
108
|
zone.records << cname
|
88
109
|
end
|
89
110
|
end
|
111
|
+
end
|
90
112
|
|
91
|
-
|
92
|
-
|
93
|
-
srv = DNS::Zone::RR::SRV.new
|
94
|
-
srv.label = "_#{service['service']}._#{service['protocol']}"
|
95
|
-
srv.target = service['target']
|
96
|
-
srv.port = service['port']
|
97
|
-
service['priority'] ||= 0
|
98
|
-
srv.priority = service['priority']
|
99
|
-
service['weight'] ||= 0
|
100
|
-
srv.weight = service['weight']
|
101
|
-
zone.records << srv
|
102
|
-
end
|
103
|
-
end
|
113
|
+
@forward_zones[domain['net.dns.domain']] = zone
|
114
|
+
end
|
104
115
|
|
105
|
-
domain.children(kind:'ipv4_interface') do |interface|
|
106
|
-
a = DNS::Zone::RR::A.new
|
107
|
-
a.label = interface['net.dns.name']
|
108
|
-
a.address = interface['net.ipv4.address']
|
109
|
-
zone.records << a
|
110
|
-
|
111
|
-
if interface['net.dns.alias']
|
112
|
-
interface['net.dns.alias'].each do |label|
|
113
|
-
cname = DNS::Zone::RR::CNAME.new
|
114
|
-
cname.label = label
|
115
|
-
cname.domainname = interface['net.dns.name']
|
116
|
-
zone.records << cname
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
116
|
|
121
|
-
|
122
|
-
|
123
|
-
zonefile << zone.dump_pretty
|
124
|
-
end
|
117
|
+
# Generate and store reverse zone data for the IPv4 network
|
118
|
+
# associated with a Pallet Jack domain object.
|
125
119
|
|
126
|
-
|
120
|
+
def process_reverse_zone(domain)
|
121
|
+
# Assume all delegations happen on octet boundaries for now.
|
122
|
+
# TODO: RFC 2317 classless in-addr.arpa delegation
|
127
123
|
|
128
|
-
|
124
|
+
reverse_zone = DNS::Zone.new
|
129
125
|
|
130
|
-
|
131
|
-
# TODO: RFC 2317 classless in-addr.arpa delegation
|
126
|
+
absolute_reverse_zone_name = IP.new(domain['net.ipv4.cidr']).to_arpa
|
132
127
|
|
133
|
-
|
128
|
+
prefix_octets, _ = domain['net.ipv4.prefixlen'].to_i.divmod(8)
|
129
|
+
zone_file_name = absolute_reverse_zone_name.split('.')[-(2 + prefix_octets) .. 5].join('.')
|
130
|
+
reverse_zone.origin = zone_file_name + '.'
|
134
131
|
|
135
|
-
|
136
|
-
absolute_reverse_zone_name = ip_net.to_arpa
|
132
|
+
reverse_zone.ttl = domain['net.dns.ttl']
|
137
133
|
|
138
|
-
|
139
|
-
|
134
|
+
reverse_zone.soa.serial = @serial
|
135
|
+
reverse_zone.soa.label = reverse_zone.origin
|
136
|
+
reverse_zone.soa.nameserver = domain['net.dns.soa-ns']
|
137
|
+
reverse_zone.soa.email = "#{domain['net.dns.soa-contact']}.".sub('@', '.')
|
140
138
|
|
141
|
-
|
139
|
+
domain['net.dns.ns'].each do |address|
|
140
|
+
ns = DNS::Zone::RR::NS.new
|
141
|
+
ns.label = reverse_zone.origin
|
142
|
+
ns.nameserver = address
|
143
|
+
reverse_zone.records << ns
|
144
|
+
end
|
142
145
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
146
|
+
domain.children(kind:'ipv4_interface') do |interface|
|
147
|
+
ptr = DNS::Zone::RR::PTR.new
|
148
|
+
ptr.label = IP.new(interface['net.ipv4.address']).to_arpa
|
149
|
+
ptr.name = "#{interface['net.dns.fqdn']}."
|
150
|
+
reverse_zone.records << ptr
|
151
|
+
end
|
147
152
|
|
148
|
-
|
149
|
-
|
150
|
-
ns.label = "#{reverse_zone.origin}."
|
151
|
-
ns.nameserver = address
|
152
|
-
reverse_zone.records << ns
|
153
|
-
end
|
153
|
+
@reverse_zones[zone_file_name] = reverse_zone
|
154
|
+
end
|
154
155
|
|
155
|
-
domain.children(kind:'ipv4_interface') do |interface|
|
156
|
-
ptr = DNS::Zone::RR::PTR.new
|
157
|
-
ptr.label = IP.new(interface['net.ipv4.address']).to_arpa
|
158
|
-
ptr.name = "#{interface['net.dns.fqdn']}."
|
159
|
-
reverse_zone.records << ptr
|
160
|
-
end
|
161
156
|
|
162
|
-
|
163
|
-
|
164
|
-
|
157
|
+
def process
|
158
|
+
config_dir :zone_dir
|
159
|
+
|
160
|
+
# Temporary storage in hashes of "domain name" => DNS::Zone object
|
161
|
+
@forward_zones = {}
|
162
|
+
@reverse_zones = {}
|
163
|
+
|
164
|
+
# Use Unix timestamp as serial number, and get it once so all zones get
|
165
|
+
# the same one
|
166
|
+
@serial = Time.now.utc.to_i
|
167
|
+
|
168
|
+
jack.each(kind:'domain') do |domain|
|
169
|
+
process_forward_zone(domain)
|
170
|
+
process_reverse_zone(domain)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
|
175
|
+
def output
|
176
|
+
config_file :output, 'zones.conf' do |conf_file|
|
177
|
+
conf_file << git_header('palletjack2knot')
|
178
|
+
|
179
|
+
@forward_zones.each do |domain, zone|
|
180
|
+
config_file :zone_dir, "#{domain}.zone" do |zonefile|
|
181
|
+
zonefile << git_header('palletjack2knot', comment_char: ';')
|
182
|
+
zonefile << zone.dump_pretty
|
183
|
+
conf_file << zone_config(domain)
|
184
|
+
end
|
165
185
|
end
|
166
186
|
|
167
|
-
|
187
|
+
@reverse_zones.each do |domain, zone|
|
188
|
+
config_file :zone_dir, "#{domain}.zone" do |zonefile|
|
189
|
+
zonefile << git_header('palletjack2knot', comment_char: ';')
|
190
|
+
zonefile << zone.dump_pretty
|
191
|
+
conf_file << zone_config(domain)
|
192
|
+
end
|
193
|
+
end
|
168
194
|
end
|
169
195
|
end
|
170
196
|
end
|
197
|
+
|
198
|
+
if PalletJack2Knot.standalone?(__FILE__)
|
199
|
+
PalletJack2Knot.run
|
200
|
+
end
|
data/exe/palletjack2pxelinux
CHANGED
@@ -142,15 +142,14 @@ LABEL MainMenu
|
|
142
142
|
"
|
143
143
|
end
|
144
144
|
end
|
145
|
-
end
|
146
145
|
|
147
|
-
|
148
|
-
|
149
|
-
|
146
|
+
def output
|
147
|
+
config_dir :output, 'config'
|
148
|
+
config_dir :output, 'pxelinux.cfg'
|
150
149
|
|
151
|
-
|
152
|
-
|
153
|
-
|
150
|
+
config_file :output, 'config', 'linux.menu' do |menufile|
|
151
|
+
menufile << git_header('palletjack2pxelinux')
|
152
|
+
menufile << "
|
154
153
|
UI menu.c32
|
155
154
|
PROMPT 0
|
156
155
|
MENU INCLUDE /config/graphics.conf
|
@@ -158,34 +157,39 @@ MENU INCLUDE /config/graphics.conf
|
|
158
157
|
MENU TITLE Linux Installation Menu
|
159
158
|
"
|
160
159
|
|
161
|
-
|
162
|
-
|
160
|
+
jack.each(kind:'os') do |os|
|
161
|
+
next unless config=os['host.pxelinux.config']
|
163
162
|
|
164
|
-
|
163
|
+
label=config.gsub(/-/, ' ')
|
165
164
|
|
166
|
-
|
165
|
+
pxemenu_for_operating_system(os)
|
167
166
|
|
168
|
-
|
167
|
+
menufile << "
|
169
168
|
LABEL #{config}
|
170
169
|
MENU LABEL Install #{label}
|
171
170
|
KERNEL menu.c32
|
172
171
|
APPEND /config/#{config}.menu
|
173
172
|
"
|
173
|
+
end
|
174
174
|
end
|
175
|
-
end
|
176
175
|
|
177
|
-
|
176
|
+
# Generate pxe default menu links for each system
|
178
177
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
178
|
+
jack.each(kind:'system') do |system|
|
179
|
+
system.children(kind:'ipv4_interface') do |nic|
|
180
|
+
if system['host.pxelinux.config']
|
181
|
+
menuname = "#{system['host.pxelinux.config']}.menu"
|
182
|
+
linkname = "01-#{nic['net.layer2.address'].gsub(':', '-').downcase}"
|
184
183
|
|
185
|
-
|
186
|
-
|
187
|
-
|
184
|
+
FileUtils.ln_s(config_path('..', 'config', menuname),
|
185
|
+
config_path(:output, 'pxelinux.cfg', linkname),
|
186
|
+
:force => true)
|
187
|
+
end
|
188
188
|
end
|
189
189
|
end
|
190
190
|
end
|
191
191
|
end
|
192
|
+
|
193
|
+
if PalletJack2PXELinux.standalone?(__FILE__)
|
194
|
+
PalletJack2PXELinux.run
|
195
|
+
end
|
data/exe/palletjack2unbound
CHANGED
@@ -66,7 +66,9 @@ stub-zone:
|
|
66
66
|
def initialize(service_name)
|
67
67
|
@tool = PalletJack2Unbound.instance
|
68
68
|
@service_name = service_name
|
69
|
-
@service_config = @tool.jack.fetch(kind:'service',
|
69
|
+
@service_config = @tool.jack.fetch(kind:'service',
|
70
|
+
parent_name: 'dns-resolver',
|
71
|
+
name: @service_name)
|
70
72
|
end
|
71
73
|
|
72
74
|
# Generate unbound service configuration
|
metadata
CHANGED
@@ -1,14 +1,37 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: palletjack-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl-Johan Karlsson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRYwFAYDVQQDDA1jYWxs
|
14
|
+
ZS5lbmdsdW5kMRkwFwYKCZImiZPyLGQBGRYJc2FhYmdyb3VwMRMwEQYKCZImiZPy
|
15
|
+
LGQBGRYDY29tMB4XDTE2MTEwMjA5MjYyN1oXDTE3MTEwMjA5MjYyN1owSDEWMBQG
|
16
|
+
A1UEAwwNY2FsbGUuZW5nbHVuZDEZMBcGCgmSJomT8ixkARkWCXNhYWJncm91cDET
|
17
|
+
MBEGCgmSJomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBAM7OxaztzD0LyOwK1mPcg3BhioX1EDVbD/qAFOAzBSGGlAhtmHMqAkyvJMvs
|
19
|
+
iiG7xvBidWUapxiEiBwamXiOTSrp2eW+XSXW9omdWHXjBZcwHqwb1VmAlYRDkSHf
|
20
|
+
dzcM/z4xlV+DJw/pFyMRWzqNdVBtWTbVXAFGjJSqQ6q21ACYJldV9U71AIpXo+oF
|
21
|
+
VEMf6PZS2uhB1G+FgAtnX/xmy7OM1Cy3qc/CaJbWSddpegxWJMUn2HNQxFwIe40g
|
22
|
+
WoEoiFA7qQg9DnR/5i3lW6QyfIaA5k9cv2su1VyjqKLbkFTTTjYw0P1BJmvfXjtc
|
23
|
+
rMl+3HCWYj6UunZwfZi2wDGsBkkCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
24
|
+
DwQEAwIEsDAdBgNVHQ4EFgQUwHCMEKgrIMaiTkTVLKZn6yOD1SIwJgYDVR0RBB8w
|
25
|
+
HYEbY2FsbGUuZW5nbHVuZEBzYWFiZ3JvdXAuY29tMCYGA1UdEgQfMB2BG2NhbGxl
|
26
|
+
LmVuZ2x1bmRAc2FhYmdyb3VwLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAP9OnE0jP
|
27
|
+
2vRHI/vnOkgCvLFNoOqK/YB4yDVVW69Pza+xIXcmUBvl7DQ+bBdF5AK0B1A7U0rp
|
28
|
+
Pbdj0bpQtWxmUmMIbnE1w6iuVCXAabsyUfHY4mlztToWXMVOXc1SPlJ/S2XXaRd5
|
29
|
+
fiNj/nBTb0YTQA0E4pZ0Aud80qZ2WLdc6FfzHUEMW91BL3bhLeDL40noHK5Lvk52
|
30
|
+
phzVHIrDjCowUMTnGiPZCXEo4KZW76KwYYV6oQ6LzcrYBw5mJ4XpdgQKZgnTnRBP
|
31
|
+
f8wtQllq82VF0AXUYeLtTh1f+DW3WW5BO1e2OCu5eOV7dbyaVPaNK/+rHjCN8kM/
|
32
|
+
DGZSwUoNADmVkQ==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2016-11-11 00:00:00.000000000 Z
|
12
35
|
dependencies:
|
13
36
|
- !ruby/object:Gem::Dependency
|
14
37
|
name: palletjack
|
@@ -16,14 +39,14 @@ dependencies:
|
|
16
39
|
requirements:
|
17
40
|
- - '='
|
18
41
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
42
|
+
version: 0.2.0
|
20
43
|
type: :runtime
|
21
44
|
prerelease: false
|
22
45
|
version_requirements: !ruby/object:Gem::Requirement
|
23
46
|
requirements:
|
24
47
|
- - '='
|
25
48
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
49
|
+
version: 0.2.0
|
27
50
|
- !ruby/object:Gem::Dependency
|
28
51
|
name: dns-zone
|
29
52
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
193
|
version: '0'
|
171
194
|
requirements: []
|
172
195
|
rubyforge_project:
|
173
|
-
rubygems_version: 2.
|
196
|
+
rubygems_version: 2.0.14
|
174
197
|
signing_key:
|
175
198
|
specification_version: 4
|
176
199
|
summary: Tools for the Pallet Jack Lightweight Configuration Management Database
|
metadata.gz.sig
ADDED
Binary file
|