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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 592cf2999261101fd4930d23fa025dc72f2fa4d4
4
- data.tar.gz: 68b4f932eded37a44ecc262fdf318655497cf4ed
3
+ metadata.gz: c2a43755fd7148982054971df7e27ab37e595cb9
4
+ data.tar.gz: 21ba8f7faf430be94ccc706219198bb876b3cbec
5
5
  SHA512:
6
- metadata.gz: f61f1425f9ce5c5313d45121d7557fc31d4b1cfeb142f21f674b0ea5d9de75bac4dbb670cedf7f4c13f64b3a86d0ba36c7cd287a38e96cbffe2804b474ac7439
7
- data.tar.gz: 0e4851330e8babe899614570f07c1516f664304bea8dc4e0643d3e9434260d1c6de1d4dd738baa6f8fe1add58d684a634bff7f6007e6054e1147767562c5a546
6
+ metadata.gz: 35d6339b9c61886b4ae9304e12ad5d5ff07b5bf9c600fb09e12bcf7a5c2fc9c65733ef2b231142e5a5c0aab203714398bf0867401b812613835ad4d9af6e6ef3
7
+ data.tar.gz: 496da0df8604580b2defa089848c7849f566c3d1c282734f87eed2f4dc259a94c9e7f64206cb3ce16ec33fa02fba432df7168dab9fb81daad1d5d18bd2487f94
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.1.1
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.add_instance('wilmut.example.com', '80.0.0.10', :jumphost)
31
+ buildserver.add_role('jumpserver')
32
32
 
33
- buildserver.add_build_block(:base, Blocks::Base::Builder.new)
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 servers with roles:
69
+ ### Adding roles:
75
70
 
76
71
  ```ruby
77
- buildserver.add_instance('m1.example.com', '80.0.0.1', :loadbalancer)
78
- buildserver.add_instance('m2.example.com', '80.0.0.2', :utility)
79
- buildserver.add_instance('m3.example.com', '80.0.0.3', :application)
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 = '1.0.0'
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/instance'
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(config = {})
11
- @instances = []
12
-
13
- @config = config
10
+ def initialize
11
+ @roles = []
14
12
  end
15
13
 
16
- def add_instance(hostname, role, ip_address)
17
- @instances << Instance.new(hostname, role, ip_address)
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
- if for_role == :base
22
- instances = @instances
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
- instances = @instances.select{|instance| instance.has_role?(for_role.to_s)}
24
+ roles = @roles.select{|role| role.has_role?(for_role)}
25
25
  end
26
26
 
27
- instances.each do |instance|
28
- instance.add_build_block(build_block)
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
- @instances.each do |instance|
37
- puts "Writing to builds/#{instance.hostname}.sh..."
38
- commands = instance.build(@config, @instances - [instance])
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/#{instance.hostname}.sh", "w")
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!(config, instance, other_instances)
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, filepath)
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 Instance
6
- attr_reader :hostname, :ip_address, :role
5
+ class Role
6
+ attr_reader :role
7
7
 
8
- def initialize(hostname, role, ip_address)
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(config, instances)
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!(config, self, instances)
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: 1.0.0
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-06-12 00:00:00.000000000 Z
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/instance.rb
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.2.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