rouster 0.7 → 0.41

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.
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')