joyent-provisioner 0.2.0 → 0.3.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: 350a79b3f24e51021a8dc22a4cb86b2b6837057b
4
- data.tar.gz: e4a41ef07b05cf7c368c3e23b5b1f64172bedf60
3
+ metadata.gz: 112ca66cf4b1b153f6ec273ff04ba83ae59cd053
4
+ data.tar.gz: ea701940d4b0dddd2af5d402c2eac05952bfc88a
5
5
  SHA512:
6
- metadata.gz: 263f08be6a827e1792ea584d948210245419654c49eb2e895eaa2fc72c8e8cd72ff986d91a06080950a83e41b77cdca936a420f5c12c59cbbacc782d4460789b
7
- data.tar.gz: 7ec513c91bbbdf36f720bd9a79be84c2ec83665f8cb77604ebbf39f3353c5f9d1b84a26e035afab9c8455a33b40def38aa13eb63b544de95f861b3f7ce22fc30
6
+ metadata.gz: 66e9595db1d605ef08471a86eb2632c71a3629f9ad352bb3e831731520870b2cca5733e570b90759b25837d52df81db51aaba068acaeb6d8f7088ecf039d8196
7
+ data.tar.gz: fc21b4800f1addad8e44cbc17b1dcbf70398a662594e597f68fb297e5f580fac34545a59413073a220b01c65f8a819ccbfd8e6d1b0c1449bad160356f3ddd9ac
@@ -5,6 +5,19 @@ class Provisioner::CLI::Bootstrap < Provisioner::CLI
5
5
 
6
6
  banner 'Usage: provisioner bootstrap --config <path-to-config>.yml [options] '
7
7
 
8
+ option :reset,
9
+ short: '-R',
10
+ long: '--reset',
11
+ description: 'Path to the config file (YML)',
12
+ boolean: true,
13
+ required: false
14
+
15
+ option :sudo,
16
+ long: '--sudo',
17
+ description: 'Execute bootstrap via sudo',
18
+ boolean: false,
19
+ required: false
20
+
8
21
  def run(argv = ARGV)
9
22
  parse_options argv
10
23
  enable_logger if config[:debug]
@@ -19,7 +32,7 @@ class Provisioner::CLI::Bootstrap < Provisioner::CLI
19
32
  end
20
33
 
21
34
  def provisioner_command
22
- Provisioner::Command::Bootstrap.new(template_configuration.for_template(config[:template]), config[:number], config[:ssh_user])
35
+ Provisioner::Command::Bootstrap.new(template_configuration.for_template(config[:template]), config)
23
36
  end
24
37
 
25
38
  end
@@ -19,7 +19,7 @@ class Provisioner::CLI::Provision < Provisioner::CLI
19
19
  end
20
20
 
21
21
  def provisioner_command
22
- Provisioner::Command::Provision.new(template_configuration.for_template(config[:template]), config[:number], config[:ssh_user])
22
+ Provisioner::Command::Provision.new(template_configuration.for_template(config[:template]), config)
23
23
  end
24
24
 
25
25
  end
@@ -3,14 +3,15 @@ module Provisioner
3
3
  class Base
4
4
  attr_accessor :image, :flavor, :distro, :networks, :run_list,
5
5
  :host_sequence, :host_prefix, :environment, :host_suffix,
6
- :host_presuffix, :log_dir, :host_number, :ssh_user
6
+ :host_presuffix, :log_dir, :host_number, :options, :ssh_user
7
7
 
8
- def initialize(template_configuration, host_number=nil, ssh_user=nil)
9
- @host_number = host_number
8
+ def initialize(template_configuration, options = {})
9
+ @options = options
10
+ @host_number = options[:number]
10
11
  template_configuration.each_pair do |key, value|
11
12
  self.send("#{key}=", value)
12
13
  end
13
- @ssh_user = ssh_user if ssh_user
14
+ @ssh_user = options[:ssh_user] if options[:ssh_user]
14
15
  raise "Log path is required" unless @log_dir
15
16
  Dir.mkdir(log_dir) unless Dir.exists?(log_dir)
16
17
  end
@@ -2,12 +2,22 @@ module Provisioner
2
2
  module Command
3
3
  class Bootstrap < Base
4
4
 
5
+ def use_sudo?
6
+ options[:sudo]
7
+ end
8
+
5
9
  private
6
10
 
7
11
  def shell_commands_for(number)
8
12
  host = HostCommand.new(host_name(number), self)
9
13
 
10
- [host.reset_command, host.bootstrap_command]
14
+ commands = []
15
+ commands << host.reset_command if reset_chef?
16
+ commands << host.bootstrap_command
17
+ end
18
+
19
+ def reset_chef?
20
+ options[:reset]
11
21
  end
12
22
 
13
23
  class HostCommand
@@ -36,6 +46,7 @@ module Provisioner
36
46
 
37
47
  bootstrap_command << "--run-list #{context.run_list}" if context.run_list
38
48
  bootstrap_command << "--ssh-user #{context.ssh_user}"
49
+ bootstrap_command << '--sudo' if context.use_sudo?
39
50
  bootstrap_command << "2>&1 > #{context.log_dir}/#{name}_provision.log &"
40
51
  bootstrap_command.join(' ')
41
52
  end
@@ -1,3 +1,3 @@
1
1
  module Provisioner
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -25,7 +25,7 @@ describe Provisioner::Command::Bootstrap do
25
25
 
26
26
  context 'host is specified' do
27
27
 
28
- let(:subject) { Provisioner::Command::Bootstrap.new(template_configuration, '1') }
28
+ let(:subject) { Provisioner::Command::Bootstrap.new(template_configuration, number: '1') }
29
29
 
30
30
  let(:expected_bootstrap_command) { [
31
31
  'knife bootstrap 1.2.3.4',
@@ -38,13 +38,30 @@ describe Provisioner::Command::Bootstrap do
38
38
  ].join(' ') }
39
39
 
40
40
  it 'returns command string' do
41
- expect(shell_commands[0]).to eq("ssh 1.2.3.4 -l ops 'sudo rm -rf /etc/chef'")
42
- expect(shell_commands[1]).to eq(expected_bootstrap_command)
41
+ expect(shell_commands[0]).to eq(expected_bootstrap_command)
43
42
  end
44
43
  end
45
44
 
46
45
  context 'ssh user is overridden' do
47
- let(:subject) { Provisioner::Command::Bootstrap.new(template_configuration, '1', 'root') }
46
+ let(:subject) { Provisioner::Command::Bootstrap.new(template_configuration, number: '1', ssh_user: 'root') }
47
+
48
+ let(:expected_bootstrap_command) { [
49
+ 'knife bootstrap 1.2.3.4',
50
+ '--distro smartos-base64',
51
+ '--environment test',
52
+ '--node-name memcached-sessions001.c1.test',
53
+ '--run-list role[joyent]',
54
+ '--ssh-user root',
55
+ '2>&1 > ./tmp/memcached-sessions001.c1.test_provision.log &'
56
+ ].join(' ') }
57
+
58
+ it 'returns command string' do
59
+ expect(shell_commands[0]).to eq(expected_bootstrap_command)
60
+ end
61
+ end
62
+
63
+ context 'reset is true' do
64
+ let(:subject) { Provisioner::Command::Bootstrap.new(template_configuration, number: '1', ssh_user: 'root', reset: true) }
48
65
 
49
66
  let(:expected_bootstrap_command) { [
50
67
  'knife bootstrap 1.2.3.4',
@@ -61,6 +78,25 @@ describe Provisioner::Command::Bootstrap do
61
78
  expect(shell_commands[1]).to eq(expected_bootstrap_command)
62
79
  end
63
80
  end
81
+
82
+ context 'sudo is true' do
83
+ let(:subject) { Provisioner::Command::Bootstrap.new(template_configuration, number: '1', ssh_user: 'root', sudo: true) }
84
+
85
+ let(:expected_bootstrap_command) { [
86
+ 'knife bootstrap 1.2.3.4',
87
+ '--distro smartos-base64',
88
+ '--environment test',
89
+ '--node-name memcached-sessions001.c1.test',
90
+ '--run-list role[joyent]',
91
+ '--ssh-user root',
92
+ '--sudo',
93
+ '2>&1 > ./tmp/memcached-sessions001.c1.test_provision.log &'
94
+ ].join(' ') }
95
+
96
+ it 'returns command string' do
97
+ expect(shell_commands[0]).to eq(expected_bootstrap_command)
98
+ end
99
+ end
64
100
  end
65
101
  end
66
102
 
@@ -7,7 +7,7 @@ describe Provisioner::Command::Provision do
7
7
 
8
8
  context 'host is specified' do
9
9
 
10
- let(:subject) { Provisioner::Command::Provision.new(template_configuration, '1') }
10
+ let(:subject) { Provisioner::Command::Provision.new(template_configuration, number: '1') }
11
11
  let(:expected_command) { [
12
12
  'knife joyent server create',
13
13
  '--image 9ec5c0c-a941-11e2-a7dc-57a6b041988f',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joyent-provisioner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Gredeskoul
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-09-06 00:00:00.000000000 Z
13
+ date: 2013-09-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mixlib-cli
@@ -215,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
215
215
  version: '0'
216
216
  requirements: []
217
217
  rubyforge_project:
218
- rubygems_version: 2.0.2
218
+ rubygems_version: 2.0.7
219
219
  signing_key:
220
220
  specification_version: 4
221
221
  summary: Wrapper gem around provisioning clusters of servers on Joyent cloud