fabric 0.2.0 → 0.3.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.
- data/README.rdoc +10 -5
- data/VERSION +1 -1
- data/bin/fab +0 -1
- data/fabric.gemspec +24 -16
- data/features/support/env.rb +0 -2
- data/lib/fabric/map.rb +13 -17
- data/spec/classes/map_spec.rb +6 -0
- data/spec/spec_helper.rb +0 -2
- data/tasks/jeweler.rake +10 -1
- metadata +64 -14
- data/Gemfile +0 -18
data/README.rdoc
CHANGED
@@ -64,6 +64,7 @@ This will then execute the map file as pure Ruby, and perform the necessary oper
|
|
64
64
|
# Create a namespace - this will contain all the users defined in the parent,
|
65
65
|
# but any users and roles added will only exist within this block
|
66
66
|
map.namespace do |cool_website|
|
67
|
+
|
67
68
|
# pass multiple IPs to add multiple hosts to this role
|
68
69
|
cool_website.role 'memcached', '1.1.1.1', '2.2.2.2'
|
69
70
|
|
@@ -73,18 +74,22 @@ This will then execute the map file as pure Ruby, and perform the necessary oper
|
|
73
74
|
# Add all our users, including from the parent, to the memcached server:
|
74
75
|
grant :all, 'memcached'
|
75
76
|
|
77
|
+
# Timmy isn't allowed onto the syslogging box :(
|
78
|
+
cool_website.role 'syslog', '3.3.3.3'
|
79
|
+
grant "timmy", :all, :except => ["syslog"]
|
80
|
+
|
76
81
|
end
|
77
82
|
end
|
78
83
|
|
79
|
-
==
|
84
|
+
== Testing Requirements
|
80
85
|
|
81
|
-
|
86
|
+
You want to get involved? Great! Grab the code and check dependencies with:
|
82
87
|
|
83
|
-
|
88
|
+
rake check_dependencies
|
84
89
|
|
85
|
-
|
90
|
+
Previously, bundler (http://github.com/wycats/bundler) was used to package dependencies; unfortunately this doesn't seem to play that nicely with jeweler.
|
86
91
|
|
87
|
-
|
92
|
+
A lot of the tests this gem rely on being able to ssh to a target machine. This can be your development machine, but it's easier if it's a Virtual Machine (try out something from http://virtualbox.org). To run tests, first ensure you have bundled the gems with 'gem bundle', and copy the test.yml.example file to point at a machine which can be safely used to test SSH commands.
|
88
93
|
|
89
94
|
Note: add the moment, the tests assume at various points a Linux, rather than an OS X, way of doing things.
|
90
95
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/bin/fab
CHANGED
data/fabric.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{fabric}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Sam Phillips"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-30}
|
13
13
|
s.default_executable = %q{fab}
|
14
14
|
s.description = %q{Fabric is a small ruby app to perform tasks on servers via SSH. Built around net/ssh and taking heavy inspiration from Capistrano, it allows you to create policies for server management and perform sysadmin tasks without the need for a process/daemon/dependency or even ruby being installed on the remote server.}
|
15
15
|
s.email = %q{sam.phillips@setfiremedia.com}
|
@@ -21,7 +21,6 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.files = [
|
22
22
|
".document",
|
23
23
|
".gitignore",
|
24
|
-
"Gemfile",
|
25
24
|
"LICENSE",
|
26
25
|
"README.rdoc",
|
27
26
|
"Rakefile",
|
@@ -55,16 +54,7 @@ Gem::Specification.new do |s|
|
|
55
54
|
"tasks/rdoc.rake",
|
56
55
|
"tasks/spec.rake",
|
57
56
|
"tasks/test.rake",
|
58
|
-
"test.yml.example"
|
59
|
-
"vendor/gems/ruby/1.8/cache/addressable-2.1.1.gem",
|
60
|
-
"vendor/gems/ruby/1.8/cache/columnize-0.3.1.gem",
|
61
|
-
"vendor/gems/ruby/1.8/cache/data_objects-0.10.0.gem",
|
62
|
-
"vendor/gems/ruby/1.8/cache/dm-core-0.10.2.gem",
|
63
|
-
"vendor/gems/ruby/1.8/cache/do_sqlite3-0.10.0.gem",
|
64
|
-
"vendor/gems/ruby/1.8/cache/extlib-0.9.14.gem",
|
65
|
-
"vendor/gems/ruby/1.8/cache/linecache-0.43.gem",
|
66
|
-
"vendor/gems/ruby/1.8/cache/net-ssh-2.0.15.gem",
|
67
|
-
"vendor/gems/ruby/1.8/cache/ruby-debug-base-0.10.3.gem"
|
57
|
+
"test.yml.example"
|
68
58
|
]
|
69
59
|
s.homepage = %q{http://github.com/setfire/fabric}
|
70
60
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -86,12 +76,30 @@ Gem::Specification.new do |s|
|
|
86
76
|
s.specification_version = 3
|
87
77
|
|
88
78
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
89
|
-
s.add_development_dependency(%q<cucumber>, ["
|
79
|
+
s.add_development_dependency(%q<cucumber>, ["= 0.6.1"])
|
80
|
+
s.add_development_dependency(%q<rspec>, ["= 1.2.9"])
|
81
|
+
s.add_development_dependency(%q<database_cleaner>, ["= 0.4.0"])
|
82
|
+
s.add_runtime_dependency(%q<net-ssh>, ["= 2.0.15"])
|
83
|
+
s.add_runtime_dependency(%q<dm-core>, ["= 0.10.2"])
|
84
|
+
s.add_runtime_dependency(%q<data_objects>, ["= 0.10.0"])
|
85
|
+
s.add_runtime_dependency(%q<do_sqlite3>, ["= 0.10.0"])
|
90
86
|
else
|
91
|
-
s.add_dependency(%q<cucumber>, ["
|
87
|
+
s.add_dependency(%q<cucumber>, ["= 0.6.1"])
|
88
|
+
s.add_dependency(%q<rspec>, ["= 1.2.9"])
|
89
|
+
s.add_dependency(%q<database_cleaner>, ["= 0.4.0"])
|
90
|
+
s.add_dependency(%q<net-ssh>, ["= 2.0.15"])
|
91
|
+
s.add_dependency(%q<dm-core>, ["= 0.10.2"])
|
92
|
+
s.add_dependency(%q<data_objects>, ["= 0.10.0"])
|
93
|
+
s.add_dependency(%q<do_sqlite3>, ["= 0.10.0"])
|
92
94
|
end
|
93
95
|
else
|
94
|
-
s.add_dependency(%q<cucumber>, ["
|
96
|
+
s.add_dependency(%q<cucumber>, ["= 0.6.1"])
|
97
|
+
s.add_dependency(%q<rspec>, ["= 1.2.9"])
|
98
|
+
s.add_dependency(%q<database_cleaner>, ["= 0.4.0"])
|
99
|
+
s.add_dependency(%q<net-ssh>, ["= 2.0.15"])
|
100
|
+
s.add_dependency(%q<dm-core>, ["= 0.10.2"])
|
101
|
+
s.add_dependency(%q<data_objects>, ["= 0.10.0"])
|
102
|
+
s.add_dependency(%q<do_sqlite3>, ["= 0.10.0"])
|
95
103
|
end
|
96
104
|
end
|
97
105
|
|
data/features/support/env.rb
CHANGED
data/lib/fabric/map.rb
CHANGED
@@ -63,9 +63,19 @@ class Map
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
|
67
|
-
|
68
|
-
|
66
|
+
# This method has become too long again...
|
67
|
+
def grant(user_names, role_names, role_conditions = {})
|
68
|
+
users = self.users.all
|
69
|
+
roles = self.roles.all
|
70
|
+
|
71
|
+
users = users.all(:name => user_names) unless user_names == :all
|
72
|
+
roles = roles.all(:name => role_names) unless role_names == :all
|
73
|
+
|
74
|
+
if role_conditions.include?(:except)
|
75
|
+
roles = roles.all(:name.not => role_conditions[:except])
|
76
|
+
end
|
77
|
+
|
78
|
+
raise DataMapper::ObjectNotFoundError if users.empty? or roles.empty?
|
69
79
|
|
70
80
|
roles.each do |role|
|
71
81
|
role.users += users
|
@@ -85,18 +95,4 @@ class Map
|
|
85
95
|
user.keys.create(:public_key => File.read(path))
|
86
96
|
end
|
87
97
|
end
|
88
|
-
|
89
|
-
def load_association(klass, opts = {})
|
90
|
-
association = self.send(klass.to_sym).all(opts)
|
91
|
-
raise DataMapper::ObjectNotFoundError if association.empty?
|
92
|
-
association
|
93
|
-
end
|
94
|
-
|
95
|
-
def load_by_attribute(klass, attribute, opts = {})
|
96
|
-
if opts == :all
|
97
|
-
load_association(klass)
|
98
|
-
else
|
99
|
-
load_association(klass, attribute.to_sym => opts)
|
100
|
-
end
|
101
|
-
end
|
102
98
|
end
|
data/spec/classes/map_spec.rb
CHANGED
@@ -170,6 +170,12 @@ describe Map do
|
|
170
170
|
role.users.count.should == 1
|
171
171
|
end
|
172
172
|
end
|
173
|
+
|
174
|
+
it "should not add the user to the 'except' list when passed :all" do
|
175
|
+
@map.grant 'test_user', :all, :except => ['test']
|
176
|
+
@map.roles.first(:name => 'test').users.count.should == 0
|
177
|
+
@map.roles.first(:name => 'test again').users.count.should == 1
|
178
|
+
end
|
173
179
|
end
|
174
180
|
|
175
181
|
it "should raise a Object Not Found if an invalid user identifier is passed" do
|
data/spec/spec_helper.rb
CHANGED
data/tasks/jeweler.rake
CHANGED
@@ -7,7 +7,16 @@ begin
|
|
7
7
|
gem.email = "sam.phillips@setfiremedia.com"
|
8
8
|
gem.homepage = "http://github.com/setfire/fabric"
|
9
9
|
gem.authors = ["Sam Phillips"]
|
10
|
-
|
10
|
+
|
11
|
+
gem.add_development_dependency "cucumber", "0.6.1"
|
12
|
+
gem.add_development_dependency "rspec", "1.2.9"
|
13
|
+
gem.add_development_dependency "database_cleaner", "0.4.0"
|
14
|
+
|
15
|
+
gem.add_dependency 'net-ssh', '2.0.15'
|
16
|
+
gem.add_dependency 'dm-core', '0.10.2'
|
17
|
+
gem.add_dependency 'data_objects', '0.10.0'
|
18
|
+
gem.add_dependency 'do_sqlite3', '0.10.0'
|
19
|
+
|
11
20
|
end
|
12
21
|
rescue LoadError
|
13
22
|
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fabric
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Phillips
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-30 00:00:00 +00:00
|
13
13
|
default_executable: fab
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -18,9 +18,69 @@ dependencies:
|
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- - "
|
21
|
+
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.
|
23
|
+
version: 0.6.1
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.9
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: database_cleaner
|
37
|
+
type: :development
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.4.0
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: net-ssh
|
47
|
+
type: :runtime
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.0.15
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: dm-core
|
57
|
+
type: :runtime
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 0.10.2
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: data_objects
|
67
|
+
type: :runtime
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 0.10.0
|
74
|
+
version:
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: do_sqlite3
|
77
|
+
type: :runtime
|
78
|
+
version_requirement:
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 0.10.0
|
24
84
|
version:
|
25
85
|
description: Fabric is a small ruby app to perform tasks on servers via SSH. Built around net/ssh and taking heavy inspiration from Capistrano, it allows you to create policies for server management and perform sysadmin tasks without the need for a process/daemon/dependency or even ruby being installed on the remote server.
|
26
86
|
email: sam.phillips@setfiremedia.com
|
@@ -34,7 +94,6 @@ extra_rdoc_files:
|
|
34
94
|
files:
|
35
95
|
- .document
|
36
96
|
- .gitignore
|
37
|
-
- Gemfile
|
38
97
|
- LICENSE
|
39
98
|
- README.rdoc
|
40
99
|
- Rakefile
|
@@ -69,15 +128,6 @@ files:
|
|
69
128
|
- tasks/spec.rake
|
70
129
|
- tasks/test.rake
|
71
130
|
- test.yml.example
|
72
|
-
- vendor/gems/ruby/1.8/cache/addressable-2.1.1.gem
|
73
|
-
- vendor/gems/ruby/1.8/cache/columnize-0.3.1.gem
|
74
|
-
- vendor/gems/ruby/1.8/cache/data_objects-0.10.0.gem
|
75
|
-
- vendor/gems/ruby/1.8/cache/dm-core-0.10.2.gem
|
76
|
-
- vendor/gems/ruby/1.8/cache/do_sqlite3-0.10.0.gem
|
77
|
-
- vendor/gems/ruby/1.8/cache/extlib-0.9.14.gem
|
78
|
-
- vendor/gems/ruby/1.8/cache/linecache-0.43.gem
|
79
|
-
- vendor/gems/ruby/1.8/cache/net-ssh-2.0.15.gem
|
80
|
-
- vendor/gems/ruby/1.8/cache/ruby-debug-base-0.10.3.gem
|
81
131
|
has_rdoc: true
|
82
132
|
homepage: http://github.com/setfire/fabric
|
83
133
|
licenses: []
|
data/Gemfile
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
bin_path "vendor/gems/bin"
|
2
|
-
|
3
|
-
gem 'net-ssh', '2.0.15'
|
4
|
-
gem 'dm-core', '0.10.2'
|
5
|
-
gem 'data_objects', '0.10.0'
|
6
|
-
gem 'do_sqlite3', '0.10.0'
|
7
|
-
|
8
|
-
# Currently forced to bundle this, otherwise internals don't load properly
|
9
|
-
# Alternative is to comment out 'disable_system_gems'
|
10
|
-
gem 'cucumber', '0.6.1'
|
11
|
-
gem 'rspec', '1.2.9'
|
12
|
-
|
13
|
-
gem 'jeweler', '1.4.0', :bundle => false
|
14
|
-
gem 'database_cleaner', '0.4.0', :bundle => false
|
15
|
-
|
16
|
-
gem 'ruby-debug', :bundle => false
|
17
|
-
|
18
|
-
# disable_system_gems
|