vagrant-sshfs 0.0.4 → 0.0.5.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/README.md +28 -0
- data/Vagrantfile +1 -0
- data/lib/vagrant-sshfs/actions.rb +61 -15
- data/lib/vagrant-sshfs/config.rb +4 -0
- data/lib/vagrant-sshfs/version.rb +1 -1
- data/lib/vagrant-sshfs.rb +1 -1
- data/locales/en.yml +2 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ecfea9cb249194e1e907464e021f17a49e5a876
|
4
|
+
data.tar.gz: ca924db4c82d1223c6ecd6caa93f8703d1001227
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e10705226d1af4aab7033e44ccad80a12d0f09abe33aadea1ddbef0001ac3705f50856f48064e5b0ba4d789cbaef3a63304c0fe380603463c29d6125e360898
|
7
|
+
data.tar.gz: 16379fff339b38c6770f145db15919411d16f5fd4ee17cf0e444a33f035979ce7007130acd2b2e470e9b2839cdcc7c986010b0fc69c54cfab36a370f494d4223
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## vagrant-sshfs 0.0.5 ##
|
2
|
+
|
3
|
+
* Allows to disable the plugin to run on demand.
|
4
|
+
|
5
|
+
*Stéphane Klein*
|
6
|
+
|
7
|
+
* Allows to mount a host folder on the guest machine
|
8
|
+
|
9
|
+
*Adrian Olek*
|
10
|
+
|
1
11
|
## vagrant-sshfs 0.0.4 (March 5, 2014) ##
|
2
12
|
|
3
13
|
* Allows to set a custom ssh username.
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -22,6 +22,34 @@ By default it will use the Vagrant ssh username. You can change that with the fo
|
|
22
22
|
|
23
23
|
`config.sshfs.username = "theusername"`
|
24
24
|
|
25
|
+
The plugin is enabled by default, so it will run everytime the machine starts. In case that is not desired, you can disabled that with the following configuration:
|
26
|
+
|
27
|
+
`config.sshfs.enabled = false`
|
28
|
+
|
29
|
+
## Issues
|
30
|
+
|
31
|
+
### Connection reset by peer
|
32
|
+
|
33
|
+
In case you are getting "Connection reset by peer" errors, it might be the case that you already have a host configuration under your `~/.ssh/know_hosts` for the given ip, and you are using the same ip with a different machine. If that is the case, you can set a `StrictHostKeyChecking no` under that ip to skip the check:
|
34
|
+
|
35
|
+
```
|
36
|
+
Host 127.0.0.1
|
37
|
+
StrictHostKeyChecking no
|
38
|
+
```
|
39
|
+
|
40
|
+
### Mounting on guest (box)
|
41
|
+
|
42
|
+
You need to have `sshfs` installed on guest machine and ssh server on host.
|
43
|
+
|
44
|
+
To mount a host folder on guest machine add a configuration like this:
|
45
|
+
|
46
|
+
config.sshfs.mount_on_guest = true
|
47
|
+
config.sshfs.paths = { "src" => "mountpoint" }
|
48
|
+
config.sshfs.host_addr = '10.0.2.2'
|
49
|
+
|
50
|
+
`src` is the source absolute path to the folder in the host machine, `mountpoint` is the folder in the guest. `src` can be an absolute path, or relative to the `Vagrantfile`.
|
51
|
+
`host_addr` is the host machine IP accessible from guest.
|
52
|
+
|
25
53
|
## Contributing
|
26
54
|
|
27
55
|
If you have issues or ideas, please contribute! You can create an issue throught Github, or send a Pull Request.
|
data/Vagrantfile
CHANGED
@@ -11,16 +11,47 @@ module Vagrant
|
|
11
11
|
def mount!
|
12
12
|
paths.each do |src, target|
|
13
13
|
info("mounting", src: src, target: target)
|
14
|
-
|
14
|
+
mount(src, target)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
def mount
|
19
|
+
raise NotImplementedError
|
20
|
+
end
|
19
21
|
|
20
22
|
def paths
|
21
23
|
machine.config.sshfs.paths
|
22
24
|
end
|
23
25
|
|
26
|
+
def machine
|
27
|
+
@env[:machine]
|
28
|
+
end
|
29
|
+
|
30
|
+
def info(key, *args)
|
31
|
+
@env[:ui].info(i18n("info.#{key}", *args))
|
32
|
+
end
|
33
|
+
|
34
|
+
def ask(key, *args)
|
35
|
+
@env[:ui].ask(i18n("ask.#{key}", *args), :new_line => true)
|
36
|
+
end
|
37
|
+
|
38
|
+
def error(key, *args)
|
39
|
+
@env[:ui].error(i18n("error.#{key}", *args))
|
40
|
+
raise Error, :base
|
41
|
+
end
|
42
|
+
|
43
|
+
def i18n(key, *args)
|
44
|
+
I18n.t("vagrant.config.sshfs.#{key}", *args)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class HostBuilder < Builder
|
49
|
+
private
|
50
|
+
|
51
|
+
def mount(src, target)
|
52
|
+
`sshfs -p #{port} #{username}@#{host}:#{check_src!(src)} #{check_target!(target)} -o IdentityFile=#{private_key}`
|
53
|
+
end
|
54
|
+
|
24
55
|
def ssh_info
|
25
56
|
machine.ssh_info
|
26
57
|
end
|
@@ -75,26 +106,33 @@ module Vagrant
|
|
75
106
|
def target_folder(target)
|
76
107
|
File.expand_path(target)
|
77
108
|
end
|
109
|
+
end
|
78
110
|
|
79
|
-
|
80
|
-
|
81
|
-
end
|
111
|
+
class GuestBuilder < Builder
|
112
|
+
private
|
82
113
|
|
83
|
-
def
|
84
|
-
|
114
|
+
def mount(src, target)
|
115
|
+
source = File.expand_path(src)
|
116
|
+
|
117
|
+
status = machine.communicate.execute(
|
118
|
+
"echo \"#{password}\" | sshfs -o allow_other -o password_stdin #{username}@#{host}:#{source} #{target}",
|
119
|
+
:sudo => true, :error_check => false)
|
120
|
+
|
121
|
+
if status != 0
|
122
|
+
error('not_mounted', src: source, target: target)
|
123
|
+
end
|
85
124
|
end
|
86
125
|
|
87
|
-
def
|
88
|
-
|
126
|
+
def host
|
127
|
+
machine.config.sshfs.host_addr
|
89
128
|
end
|
90
129
|
|
91
|
-
def
|
92
|
-
|
93
|
-
raise Error, :base
|
130
|
+
def username
|
131
|
+
`whoami`.strip
|
94
132
|
end
|
95
133
|
|
96
|
-
def
|
97
|
-
|
134
|
+
def password
|
135
|
+
Shellwords.escape(@env[:ui].ask(i18n("ask.pass", :user => "#{username}@#{host}"), :echo => false))
|
98
136
|
end
|
99
137
|
end
|
100
138
|
|
@@ -105,7 +143,15 @@ module Vagrant
|
|
105
143
|
end
|
106
144
|
|
107
145
|
def call(env)
|
108
|
-
|
146
|
+
get_builder(env).mount! if @machine.config.sshfs.enabled
|
147
|
+
end
|
148
|
+
|
149
|
+
def get_builder(env)
|
150
|
+
if @machine.config.sshfs.mount_on_guest
|
151
|
+
GuestBuilder.new(env)
|
152
|
+
else
|
153
|
+
HostBuilder.new(env)
|
154
|
+
end
|
109
155
|
end
|
110
156
|
end
|
111
157
|
end
|
data/lib/vagrant-sshfs/config.rb
CHANGED
@@ -3,10 +3,14 @@ module Vagrant
|
|
3
3
|
class Config < Vagrant.plugin(2, :config)
|
4
4
|
attr_accessor :paths
|
5
5
|
attr_accessor :username
|
6
|
+
attr_accessor :enabled
|
7
|
+
attr_accessor :mount_on_guest
|
8
|
+
attr_accessor :host_addr
|
6
9
|
|
7
10
|
def initialize
|
8
11
|
@paths = {}
|
9
12
|
@username = nil
|
13
|
+
@enabled = true
|
10
14
|
end
|
11
15
|
|
12
16
|
def merge(other)
|
data/lib/vagrant-sshfs.rb
CHANGED
data/locales/en.yml
CHANGED
@@ -10,8 +10,10 @@ en:
|
|
10
10
|
ask:
|
11
11
|
create_src: "Source folder `%{src}` does not exist, create?"
|
12
12
|
create_target: "Target folder `%{target}` does not exist, create?"
|
13
|
+
pass: "Password for `%{user}`:"
|
13
14
|
error:
|
14
15
|
base: "vagrant-sshfs failed and couldn't proceed"
|
15
16
|
non_empty_target: "Non empty target folder `%{target}`"
|
16
17
|
not_created_src: "Source folder `%{src}` was not created"
|
17
18
|
not_created_target: "Target folder `%{target}` was not created"
|
19
|
+
not_mounted: "Error when mounting `%{src}` to `%{target}`"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-sshfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fabiokr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -75,9 +75,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
75
75
|
version: '0'
|
76
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
|
-
- - "
|
78
|
+
- - ">"
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
80
|
+
version: 1.3.1
|
81
81
|
requirements: []
|
82
82
|
rubyforge_project:
|
83
83
|
rubygems_version: 2.1.11
|