buildserver 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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