rouster 0.7 → 0.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -3
  3. data/README.md +7 -241
  4. data/Rakefile +18 -55
  5. data/Vagrantfile +8 -26
  6. data/lib/rouster.rb +183 -404
  7. data/lib/rouster/deltas.rb +118 -577
  8. data/lib/rouster/puppet.rb +34 -209
  9. data/lib/rouster/testing.rb +59 -366
  10. data/lib/rouster/tests.rb +19 -70
  11. data/path_helper.rb +7 -5
  12. data/rouster.gemspec +1 -3
  13. data/test/basic.rb +1 -4
  14. data/test/functional/deltas/test_get_groups.rb +2 -74
  15. data/test/functional/deltas/test_get_packages.rb +4 -86
  16. data/test/functional/deltas/test_get_ports.rb +1 -26
  17. data/test/functional/deltas/test_get_services.rb +4 -43
  18. data/test/functional/deltas/test_get_users.rb +2 -35
  19. data/test/functional/puppet/test_facter.rb +1 -41
  20. data/test/functional/puppet/test_get_puppet_star.rb +68 -0
  21. data/test/functional/test_caching.rb +1 -5
  22. data/test/functional/test_dirs.rb +0 -25
  23. data/test/functional/test_get.rb +6 -10
  24. data/test/functional/test_inspect.rb +1 -1
  25. data/test/functional/test_is_file.rb +1 -17
  26. data/test/functional/test_new.rb +22 -233
  27. data/test/functional/test_put.rb +11 -9
  28. data/test/functional/test_restart.rb +4 -1
  29. data/test/functional/test_run.rb +3 -2
  30. data/test/puppet/test_apply.rb +11 -13
  31. data/test/puppet/test_roles.rb +173 -0
  32. data/test/unit/test_new.rb +0 -88
  33. data/test/unit/test_parse_ls_string.rb +0 -67
  34. data/test/unit/testing/test_validate_file.rb +47 -39
  35. data/test/unit/testing/test_validate_package.rb +10 -36
  36. metadata +6 -46
  37. data/.reek +0 -63
  38. data/.travis.yml +0 -11
  39. data/Gemfile +0 -17
  40. data/Gemfile.lock +0 -102
  41. data/LICENSE +0 -9
  42. data/examples/aws.rb +0 -85
  43. data/examples/openstack.rb +0 -61
  44. data/examples/passthrough.rb +0 -71
  45. data/lib/rouster/vagrant.rb +0 -311
  46. data/plugins/aws.rb +0 -347
  47. data/plugins/openstack.rb +0 -136
  48. data/test/functional/deltas/test_get_crontab.rb +0 -161
  49. data/test/functional/deltas/test_get_os.rb +0 -68
  50. data/test/functional/test_is_in_file.rb +0 -40
  51. data/test/functional/test_passthroughs.rb +0 -94
  52. data/test/functional/test_validate_file.rb +0 -131
  53. data/test/unit/puppet/resources/puppet_run_with_failed_exec +0 -59
  54. data/test/unit/puppet/resources/puppet_run_with_successful_exec +0 -61
  55. data/test/unit/puppet/test_get_puppet_star.rb +0 -91
  56. data/test/unit/puppet/test_puppet_parsing.rb +0 -44
  57. data/test/unit/testing/resources/osx-launchd +0 -285
  58. data/test/unit/testing/resources/rhel-systemd +0 -46
  59. data/test/unit/testing/resources/rhel-systemv +0 -41
  60. data/test/unit/testing/resources/rhel-upstart +0 -20
  61. data/test/unit/testing/test_get_services.rb +0 -178
  62. data/test/unit/testing/test_validate_cron.rb +0 -78
  63. data/test/unit/testing/test_validate_port.rb +0 -103
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b6badce99c05cdd7080ee400746d3c2b73a550cf
4
- data.tar.gz: b776da73cf962263b7a9d2c0ee9fedef736d926d
3
+ metadata.gz: 05f007fa8cb115a1889737b42c19eb6ab3a1029e
4
+ data.tar.gz: c58f43def276534730ead0ffb636254805ce8080
5
5
  SHA512:
6
- metadata.gz: fc0b36efffe024aa6f50bc2e4ca27aaa8be09224019b4fcd7a15e02a1be28b91b33e0050043879d34e63121a61832176d0fe81acfa0f849f80e0a67c4f03ef37
7
- data.tar.gz: dfe3b1e7d14c1a9aae10a86eaa26f876c411999152deeb4d220dc4dc685c5706f915f8fb9dfeb4790b73d800e1f8823468d5f5f567de7d5df2208ea55ff96bd7
6
+ metadata.gz: 6465a1136c9506cb9f6fd7a7dd46d90eb39d30501ab7162d2f1635bad69a6cb349bfd45eb1d183f19abdd5e214cdca81cf02f6337fd2f7f72093bd343644f7d3
7
+ data.tar.gz: 88f46d185da9d5f61193ca97651d0a16165c05e2b68871fbfb57dc6a219865054c60218682d90cb0bceaff48319b3511906570aec5597de678dd4e1a6ac0daab
data/.gitignore CHANGED
@@ -4,6 +4,3 @@ doc/*
4
4
  *.swp
5
5
  *tmp*
6
6
  *.gem
7
- .rakeTasks
8
- *raiden*
9
- .project
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  Rouster
2
2
  ======
3
3
 
4
- [![build status](https://travis-ci.org/chorankates/rouster.svg)](https://travis-ci.org/chorankates/rouster) [![Gem Version](https://badge.fury.io/rb/rouster.svg)](https://rubygems.org/gems/rouster)
5
-
6
4
  ```rb
7
5
  Rouster.is_a?('abstraction layer for controlling Vagrant virtual machines')
8
6
  => true
@@ -24,48 +22,23 @@ The first implementation of Rouster was in Perl, called [Salesforce::Vagrant](ht
24
22
 
25
23
  ## Requirements
26
24
 
27
- * [Ruby](http://rubylang.org), version 2.0+ (best attempt made to support 1.8.7 and 1.9.3 as well)
28
25
  * [Vagrant](http://vagrantup.com), version 1.0.5+
29
- * Gems
30
- * json
31
- * log4r
32
- * net-scp
33
- * net-ssh
34
- * fog (only if using AWS or OpenStack)
26
+ * a usable Vagrantfile
27
+
28
+ Note: Vagrant itself requires VirtualBox or VMWare Fusion (1.0.3+)
35
29
 
36
30
  Note: Rouster should work exactly the same on Windows as it does on \*nix and OSX (minus rouster/deltas.rb functionality, at least currently),
37
31
  but no real testing has been done to confirm this. Please file issues as appropriate.
38
32
 
39
- ### From-source local usage (latest)
40
-
41
- ```sh
42
- git clone https://github.com/chorankates/rouster.git
43
- cd rouster
44
- bundle install # use :aws to pull in fog
45
- ...
46
- irb(main):001:0> require './path_helper.rb'
47
- => true
48
- irb(main):002:0> require 'rouster'
49
- => true
50
- ```
51
-
52
- ### From-source installation (latest)
33
+ ### Easiest installation
53
34
 
54
35
  ```sh
55
36
  git clone https://github.com/chorankates/rouster.git
56
37
  cd rouster
57
38
  rake buildgem
58
- gem install rouster-<version>.gem
59
- ...
60
- irb(main):001:0> require 'rouster'
61
- => true
39
+ gem install Rouster-<version>.gem
62
40
  ```
63
41
 
64
- ### pre-built gem installation (stable)
65
-
66
- ```sh
67
- gem install rouster
68
- ```
69
42
 
70
43
  ## Using Rouster
71
44
 
@@ -146,89 +119,6 @@ app.get('/tmp/foo')
146
119
  app.destroy()
147
120
  ```
148
121
 
149
- ### advanced instantiation (passthroughs!)
150
-
151
- detailed options in ```examples/passthrough.rb```, ```examples/aws.rb``` and ```examples/openstack.rb```
152
-
153
- since Rouster only requires an SSH connection to control a machine, why stop at Vagrant?
154
-
155
- ```rb
156
- require 'rouster'
157
- require 'rouster/plugins/aws'
158
- require 'rouster/plugins/openstack'
159
-
160
- # control the machine rouster itself is running on
161
- local = Rouster.new(:name => 'local', :passthrough => { :type => :local } }
162
-
163
- # control a remote machine
164
- remote = Rouster.new(
165
- :name => 'remote',
166
- :passthrough => {
167
- :type => :remote,
168
- :host => 'foo.bar.com',
169
- :user => 'keanu',
170
- :key => '/path/to/private/key',
171
- }
172
-
173
- :sudo => true, # false by default, enabling requires that sshd is not enforcing 'requiretty'
174
- )
175
-
176
- # control a running EC2 instance
177
- aws_already_running = Rouster.new(
178
- :name => 'cloudy',
179
- :passthrough => {
180
- :type => :aws,
181
- :instance => 'your-instance-id',
182
- :keypair => 'your-keypair-name',
183
- }
184
- )
185
-
186
- # start and control an EC2 instance
187
- aws_start_me_up = Rouster.new(
188
- :name => 'bgates',
189
- :passthrough => {
190
- :type => :aws,
191
- :ami => 'your-ami-id',
192
- :security_groups => 'your-security-groups',
193
- :key_id => 'your-aws-key-id', # defaults to ${AWS_ACCESS_KEY_ID}
194
- :secret_key => 'your-aws-secret-key', # defaults to ${AWS_SECRET_ACCESS_KEY}
195
- }
196
- )
197
-
198
- # create a remote OpenStack instance
199
- ostack = Rouster.new(
200
- :name => 'ostack-testing',
201
- :passthrough => {
202
- :type => :openstack,
203
- :openstack_auth_url => 'http://hostname.domain.com:5000/v2.0/tokens',
204
- :openstack_username => 'some_console_user',
205
- :openstack_tenant => 'tenant_id',
206
- :user => 'some_ssh_userid',
207
- :keypair => 'keypair_name',
208
- :image_ref => 'c0340afb-577d-4db6-1234-aebdd6d1838f',
209
- :flavor_ref => '547d9af5-096c-44a3-1234-7d23162556b8',
210
- :openstack_api_key => 'some_api_key',
211
- :key => '/path/to/private/key.pem',
212
- },
213
- :sudo => true, # false by default, enabling requires that sshd is not enforcing 'requiretty'
214
- )
215
-
216
- # control a running OpenStack instance
217
- openstack_already_running = Rouster.new(
218
- :name => 'ostack-copy',
219
- :passthrough => {
220
- :type => :openstack,
221
- :openstack_auth_url => 'http://hostname.domain.com:5000/v2.0/tokens',
222
- :openstack_username => 'some_console_user',
223
- :openstack_tenant => 'tenant_id',
224
- :user => 'ssh_user',
225
- :keypair => 'keypair_name',
226
- :instance => 'your-instance-id',
227
- },
228
- )
229
-
230
- ```
231
-
232
122
  ### functional puppet test
233
123
 
234
124
  ```rb
@@ -272,130 +162,6 @@ end
272
162
  ## Base Methods
273
163
 
274
164
  ```rb
275
- irb(main):001:0> require './path_helper.rb'
276
- => true
277
- irb(main):002:0> require 'rouster'
278
- => true
279
- irb(main):003:0> pp (Rouster.new(:name => 'app').methods - Object.methods).sort
280
- => [
281
- [:_run,
282
- :cache,
283
- :cache_timeout,
284
- :check_key_permissions,
285
- :connect_ssh_tunnel,
286
- :deltas,
287
- :destroy,
288
- :dir,
289
- :dirs,
290
- :disconnect_ssh_tunnel,
291
- :exitcode,
292
- :facts,
293
- :facts=,
294
- :file,
295
- :files,
296
- :generate_unique_mac,
297
- :get,
298
- :get_crontab,
299
- :get_groups,
300
- :get_output,
301
- :get_packages,
302
- :get_ports,
303
- :get_services,
304
- :get_ssh_info,
305
- :get_users,
306
- :halt,
307
- :is_available_via_ssh?,
308
- :is_dir?,
309
- :is_executable?,
310
- :is_file?,
311
- :is_group?,
312
- :is_in_file?,
313
- :is_in_path?,
314
- :is_package?,
315
- :is_passthrough?,
316
- :is_port_active?,
317
- :is_port_open?,
318
- :is_process_running?,
319
- :is_readable?,
320
- :is_service?,
321
- :is_service_running?,
322
- :is_symlink?,
323
- :is_user?,
324
- :is_user_in_group?,
325
- :is_vagrant_running?,
326
- :is_writeable?,
327
- :logger,
328
- :os_type,
329
- :output,
330
- :package,
331
- :parse_ls_string,
332
- :passthrough,
333
- :put,
334
- :rebuild,
335
- :restart,
336
- :retries,
337
- :run,
338
- :sandbox_available?,
339
- :sandbox_commit,
340
- :sandbox_off,
341
- :sandbox_on,
342
- :sandbox_rollback,
343
- :sshkey,
344
- :status,
345
- :suspend,
346
- :traverse_up,
347
- :unittest,
348
- :up,
349
- :uses_sudo?,
350
- :vagrant,
351
- :vagrantbinary,
352
- :vagrantfile]
353
- ]
354
- ```
355
-
356
- ## AWS methods
357
- ```rb
358
- irb(main):001:0> require './path_helper.rb'
359
- => true
360
- irb(main):002:0> require 'rouster'
361
- => true
362
- irb(main):003:0> require 'rouster/plugins/aws'
363
- => true
364
- irb(main):004:0> pp (Rouster.new(:name => 'aws', :passthrough => { :type => :aws }).methods - Object.methods).sort
365
- => [
366
- ...
367
- :aws_bootstrap,
368
- :aws_connect,
369
- :aws_connect_to_elb,
370
- :aws_describe_instance,
371
- :aws_destroy,
372
- :aws_get_ami,
373
- :aws_get_hostname,
374
- :aws_get_instance,
375
- :aws_get_ip,
376
- :aws_get_metadata,
377
- :aws_get_url,
378
- :aws_get_userdata,
379
- :aws_status,
380
- :ec2,
381
- :elb,
382
- :elb_connect,
383
- :find_ssh_elb,
384
- :instance_data,
385
- ...
386
- ]
387
- ```
388
-
389
- ## Openstack methods
390
-
391
- ```rb
392
- [
393
- :ostack_connect,
394
- :ostack_describe_instance,
395
- :ostack_destroy,
396
- :ostack_get_instance_id,
397
- :ostack_get_ip,
398
- :ostack_status,
399
- :ostack_up
400
- ]
165
+ irb(main):003:0> (Rouster.new(:name => 'app').methods - Object.methods).sort
166
+ => [:_run, :_vm, :check_key_permissions, :connect_ssh_tunnel, :deltas, :destroy, :dir, :exitcode, :facter, :facts, :file, :generate_unique_mac, :get, :get_catalog, :get_groups, :get_output, :get_packages, :get_ports, :get_puppet_errors, :get_puppet_notices, :get_services, :get_ssh_info, :get_users, :is_available_via_ssh?, :is_dir?, :is_executable?, :is_file?, :is_group?, :is_in_file?, :is_in_path?, :is_package?, :is_passthrough?, :is_port_active?, :is_port_open?, :is_process_running?, :is_readable?, :is_service?, :is_service_running?, :is_user?, :is_user_in_group?, :is_writeable?, :log, :os_type, :output, :parse_catalog, :parse_ls_string, :passthrough, :put, :rebuild, :remove_existing_certs, :restart, :run, :run_puppet, :sshkey, :status, :sudo, :suspend, :traverse_up, :up, :uses_sudo?, :vagrantfile, :verbosity]
401
167
  ```
data/Rakefile CHANGED
@@ -1,83 +1,46 @@
1
1
  require sprintf('%s/%s', File.dirname(File.expand_path(__FILE__)), 'path_helper')
2
2
  require 'rubygems'
3
3
  require 'rake/testtask'
4
- require 'reek/rake/task'
5
4
 
6
- desc 'build the gem'
7
- task :build do
5
+ task :buildgem do
8
6
  sh 'gem build rouster.gemspec'
9
7
  end
10
8
 
11
- desc 'cleanup environment'
12
- task :clean do
13
- sh 'rm /tmp/rouster-*'
14
- end
15
-
16
9
  task :default do
17
10
  sh 'ruby test/basic.rb'
18
11
  end
19
12
 
20
- desc 'run the example demo'
21
13
  task :demo do
22
14
  sh 'ruby examples/demo.rb'
23
15
  end
24
16
 
25
- desc 'rdoc generation'
26
17
  task :doc do
27
18
  sh 'rdoc --line-numbers lib/*'
28
19
  end
29
20
 
30
21
  task :examples do
31
22
  Dir['examples/**/*.rb'].each do |example|
32
- sh "ruby #{example}"
33
- end
23
+ sh "ruby #{example}"
24
+ end
34
25
  end
35
26
 
36
- desc 'shortcut to vagrant destroy -f'
37
- task :vdestroy do
38
- sh 'vagrant destroy -f'
27
+ Rake::TestTask.new do |t|
28
+ t.name = 'test'
29
+ t.libs << 'lib'
30
+ t.test_files = FileList['test/**/test_*.rb']
31
+ t.verbose = true
39
32
  end
40
33
 
41
- Reek::Rake::Task.new do |t|
42
- t.config_file = sprintf('%s/.reek', File.dirname(__FILE__))
43
- #t.source_files = FileList.new('lib/**/*.rb', 'plugins/**/*.rb')
44
- t.source_files = FileList.new('lib/**/*.rb')
45
- t.reek_opts = '--no-wiki-links'
46
- t.fail_on_error = false
47
- t.verbose = true
34
+ Rake::TestTask.new do |t|
35
+ t.name = 'unit'
36
+ t.libs << 'lib'
37
+ t.test_files = FileList['test/unit/**/test_*.rb']
38
+ t.verbose = true
48
39
  end
49
40
 
50
- namespace :test do
51
- Rake::TestTask.new(:all => :vdestroy) do |t|
52
- t.description = 'run all tests'
53
- t.libs << 'lib'
54
- t.test_files = FileList['test/**/test_*.rb']
55
- end
56
-
57
- Rake::TestTask.new do |t|
58
- t.name = 'unit'
59
- t.description = 'run unit tests'
60
- t.libs << 'lib'
61
- t.test_files = FileList['test/unit/**/test_*.rb']
62
- end
63
-
64
- Rake::TestTask.new(:functional => :vdestroy) do |t|
65
- t.description = 'run functional tests'
66
- t.libs << 'lib'
67
- t.test_files = FileList['test/functional/**/test_*.rb']
68
- end
69
-
70
- Rake::TestTask.new(:deltas => :vdestroy) do |t|
71
- t.description = 'run delta tests'
72
- t.libs << 'lib'
73
- t.test_files = FileList['test/functional/deltas/test_*.rb']
74
- end
75
-
76
- Rake::TestTask.new do |t|
77
- t.name = 'puppet'
78
- t.description = 'run puppet tests'
79
- t.libs << 'lib'
80
- t.test_files = FileList['test/puppet/test*.rb']
81
- t.verbose = true
82
- end
41
+ Rake::TestTask.new do |t|
42
+ t.name = 'functional'
43
+ t.libs << 'lib'
44
+ t.test_files = FileList['test/functional/**/test_*.rb']
45
+ t.verbose = true
83
46
  end
data/Vagrantfile CHANGED
@@ -1,35 +1,17 @@
1
1
  # stripped down example piab Vagrantfile for rouster
2
2
 
3
- boxes = {
4
- :ppm => {
5
- :box_name => 'centos6',
6
- :box_url => 'http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210.box',
7
- },
8
- :app => {
9
- :box_name => 'centos6',
10
- :box_url => 'http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210.box',
11
- },
12
-
13
- :ubuntu12 => {
14
- :box_name => 'ubuntu12',
15
- :box_url => 'http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210.box',
16
- },
17
-
18
- :ubuntu13 => {
19
- :box_name => 'ubuntu13',
20
- :box_url => 'http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-1310-x64-virtualbox-puppet.box',
21
- },
22
-
23
- }
3
+ box_url = 'http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210.box'
4
+ box_name = 'centos6'
5
+ boxes = [:ppm, :app]
24
6
 
25
7
  Vagrant::Config.run do |config|
26
- boxes.each_pair do |box,hash|
8
+ boxes.each do |box|
27
9
  config.vm.define box do |worker|
28
10
 
29
- worker.vm.box = hash[:box_name]
30
- worker.vm.box_url = hash[:box_url]
31
- worker.vm.host_name = hash[:box_name]
32
- worker.vm.network :hostonly, sprintf('10.0.1.%s', rand(253).to_i + 2)
11
+ worker.vm.box = box_name
12
+ worker.vm.box_url = box_url
13
+ worker.vm.host_name = box.to_s
14
+ worker.vm.network :hostonly, sprintf('10.0.1.%s', rand(254))
33
15
  worker.ssh.forward_agent = true
34
16
 
35
17
  if box.to_s.eql?('ppm') and File.directory?('../puppet')