buildserver 1.0.0 → 2.0.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/.ruby-version +1 -1
- data/README.md +6 -11
- data/buildserver.gemspec +1 -1
- data/lib/buildserver.rb +16 -16
- data/lib/buildserver/building_block.rb +2 -16
- data/lib/buildserver/{instance.rb → role.rb} +5 -15
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2a43755fd7148982054971df7e27ab37e595cb9
|
4
|
+
data.tar.gz: 21ba8f7faf430be94ccc706219198bb876b3cbec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35d6339b9c61886b4ae9304e12ad5d5ff07b5bf9c600fb09e12bcf7a5c2fc9c65733ef2b231142e5a5c0aab203714398bf0867401b812613835ad4d9af6e6ef3
|
7
|
+
data.tar.gz: 496da0df8604580b2defa089848c7849f566c3d1c282734f87eed2f4dc259a94c9e7f64206cb3ce16ec33fa02fba432df7168dab9fb81daad1d5d18bd2487f94
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2.2
|
data/README.md
CHANGED
@@ -28,9 +28,9 @@ require 'buildserver'
|
|
28
28
|
require_relative 'blocks/base/builder'
|
29
29
|
|
30
30
|
buildserver = Buildserver::Buildserver.new
|
31
|
-
buildserver.
|
31
|
+
buildserver.add_role('jumpserver')
|
32
32
|
|
33
|
-
buildserver.add_build_block(
|
33
|
+
buildserver.add_build_block('base', Blocks::Base::Builder.new)
|
34
34
|
|
35
35
|
buildserver.build!
|
36
36
|
EOF
|
@@ -50,11 +50,6 @@ module Blocks
|
|
50
50
|
run_command("apt-get -y install aptitude")
|
51
51
|
run_command("aptitude -y full-upgrade")
|
52
52
|
|
53
|
-
# Set hostname
|
54
|
-
run_command("echo \"#{instance.hostname}\" > /etc/hostname")
|
55
|
-
run_command("echo -e \"\\n127.0.0.1 #{instance.hostname} #{instance.hostname}.local\\n\" >> /etc/hosts")
|
56
|
-
run_command("hostname -F /etc/hostname")
|
57
|
-
|
58
53
|
# Set ssh to only allow keys
|
59
54
|
run_command("sed -i \"/#PasswordAuthentication yes/PasswordAuthentication no/g\" /etc/ssh/sshd_config")
|
60
55
|
run_command("service ssh restart", :after)
|
@@ -71,12 +66,12 @@ end
|
|
71
66
|
EOF
|
72
67
|
```
|
73
68
|
|
74
|
-
### Adding
|
69
|
+
### Adding roles:
|
75
70
|
|
76
71
|
```ruby
|
77
|
-
buildserver.
|
78
|
-
buildserver.
|
79
|
-
buildserver.
|
72
|
+
buildserver.add_role('loadbalancer')
|
73
|
+
buildserver.add_role('utility')
|
74
|
+
buildserver.add_role('application')
|
80
75
|
```
|
81
76
|
|
82
77
|
### Built-in Builder methods:
|
data/buildserver.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "buildserver"
|
7
|
-
spec.version = '
|
7
|
+
spec.version = '2.0.0'
|
8
8
|
spec.authors = ["Kasper Grubbe"]
|
9
9
|
spec.email = ["kawsper@gmail.com"]
|
10
10
|
spec.summary = %q{Lets you easily compile bash scripts from Ruby to build server instances on your favorite Linux distro.}
|
data/lib/buildserver.rb
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
|
3
|
-
require_relative 'buildserver/
|
3
|
+
require_relative 'buildserver/role'
|
4
4
|
require_relative 'buildserver/building_block'
|
5
5
|
require_relative 'buildserver/erb_template'
|
6
6
|
|
7
7
|
module Buildserver
|
8
8
|
|
9
9
|
class Buildserver
|
10
|
-
def initialize
|
11
|
-
@
|
12
|
-
|
13
|
-
@config = config
|
10
|
+
def initialize
|
11
|
+
@roles = []
|
14
12
|
end
|
15
13
|
|
16
|
-
def
|
17
|
-
@
|
14
|
+
def add_role(role)
|
15
|
+
@roles << Role.new(role)
|
18
16
|
end
|
19
17
|
|
20
18
|
def add_build_block(for_role, build_block)
|
21
|
-
|
22
|
-
|
19
|
+
raise ArgumentError.new("Unknown role: #{for_role}") unless (['base'] + @roles.map(&:role)).include?(for_role)
|
20
|
+
|
21
|
+
if for_role == 'base'
|
22
|
+
roles = @roles
|
23
23
|
else
|
24
|
-
|
24
|
+
roles = @roles.select{|role| role.has_role?(for_role)}
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
roles.each do |role|
|
28
|
+
role.add_build_block(build_block)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -33,11 +33,11 @@ module Buildserver
|
|
33
33
|
FileUtils.mkdir_p("builds")
|
34
34
|
FileUtils.rm( Dir.glob("builds/*") )
|
35
35
|
|
36
|
-
@
|
37
|
-
puts "Writing to builds/#{
|
38
|
-
commands =
|
36
|
+
@roles.each do |role|
|
37
|
+
puts "Writing to builds/#{role.role}.sh..."
|
38
|
+
commands = role.build(@roles - [role])
|
39
39
|
|
40
|
-
file = File.new("builds/#{
|
40
|
+
file = File.new("builds/#{role.role}.sh", "w")
|
41
41
|
commands.each do |command|
|
42
42
|
file.puts(command)
|
43
43
|
end
|
@@ -3,19 +3,13 @@ require 'erb'
|
|
3
3
|
module Buildserver
|
4
4
|
class BuildingBlock
|
5
5
|
|
6
|
-
def build!(
|
6
|
+
def build!(instance, other_instances)
|
7
7
|
reset!
|
8
|
-
@config = config
|
9
|
-
|
10
8
|
build(instance, other_instances)
|
11
9
|
|
12
10
|
[@build_commands, @after_build_commands]
|
13
11
|
end
|
14
12
|
|
15
|
-
def exposes_services
|
16
|
-
[]
|
17
|
-
end
|
18
|
-
|
19
13
|
def external_ports
|
20
14
|
[]
|
21
15
|
end
|
@@ -27,7 +21,6 @@ module Buildserver
|
|
27
21
|
private
|
28
22
|
|
29
23
|
def reset!
|
30
|
-
@config = []
|
31
24
|
@build_commands = []
|
32
25
|
@after_build_commands = []
|
33
26
|
end
|
@@ -41,13 +34,6 @@ module Buildserver
|
|
41
34
|
end
|
42
35
|
end
|
43
36
|
|
44
|
-
## CONFIG
|
45
|
-
###############################################
|
46
|
-
|
47
|
-
def config(option)
|
48
|
-
@config[option]
|
49
|
-
end
|
50
|
-
|
51
37
|
## TEMPLATING
|
52
38
|
###############################################
|
53
39
|
|
@@ -142,7 +128,7 @@ EOF")
|
|
142
128
|
## TEXT EDITING
|
143
129
|
###############################################
|
144
130
|
|
145
|
-
def find_and_replace(before, after
|
131
|
+
def find_and_replace(filepath, before, after)
|
146
132
|
run_command("OLD=\"#{before}\"")
|
147
133
|
run_command("NEW=\"#{after}\"")
|
148
134
|
run_command("sed -i \"s/\${OLD}/\${NEW}/g\" #{filepath}")
|
@@ -2,13 +2,11 @@ require 'json'
|
|
2
2
|
|
3
3
|
module Buildserver
|
4
4
|
|
5
|
-
class
|
6
|
-
attr_reader :
|
5
|
+
class Role
|
6
|
+
attr_reader :role
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@hostname = hostname
|
8
|
+
def initialize(role)
|
10
9
|
@role = role.to_s
|
11
|
-
@ip_address = ip_address
|
12
10
|
@build_blocks = []
|
13
11
|
end
|
14
12
|
|
@@ -16,14 +14,6 @@ module Buildserver
|
|
16
14
|
@build_blocks << block
|
17
15
|
end
|
18
16
|
|
19
|
-
def to_s
|
20
|
-
"#{@hostname}/#{@ip_address} - #{@role}"
|
21
|
-
end
|
22
|
-
|
23
|
-
def services
|
24
|
-
@build_blocks.map{|bb| bb.exposes_services}.flatten
|
25
|
-
end
|
26
|
-
|
27
17
|
def external_ports
|
28
18
|
@build_blocks.map{|bb| bb.external_ports}.flatten
|
29
19
|
end
|
@@ -36,7 +26,7 @@ module Buildserver
|
|
36
26
|
@role == role.to_s
|
37
27
|
end
|
38
28
|
|
39
|
-
def build(
|
29
|
+
def build(roles)
|
40
30
|
@commands = []
|
41
31
|
@after_commands = []
|
42
32
|
|
@@ -47,7 +37,7 @@ module Buildserver
|
|
47
37
|
@build_blocks.each do |build_block|
|
48
38
|
@commands << "# ! #{build_block.to_s} -------------------------------------"
|
49
39
|
|
50
|
-
commands, after_commands = build_block.build!(
|
40
|
+
commands, after_commands = build_block.build!(self, roles)
|
51
41
|
|
52
42
|
@commands << commands
|
53
43
|
@commands << "# / #{build_block.to_s} -------------------------------------"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: buildserver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kasper Grubbe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -55,7 +55,7 @@ files:
|
|
55
55
|
- lib/buildserver.rb
|
56
56
|
- lib/buildserver/building_block.rb
|
57
57
|
- lib/buildserver/erb_template.rb
|
58
|
-
- lib/buildserver/
|
58
|
+
- lib/buildserver/role.rb
|
59
59
|
homepage: https://github.com/Pidrock/buildserver
|
60
60
|
licenses:
|
61
61
|
- MIT
|
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
76
|
version: '0'
|
77
77
|
requirements: []
|
78
78
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.
|
79
|
+
rubygems_version: 2.4.5
|
80
80
|
signing_key:
|
81
81
|
specification_version: 4
|
82
82
|
summary: Lets you easily compile bash scripts from Ruby to build server instances
|