vagrant-communicator-docker 1.0.7 → 1.0.11
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.
- checksums.yaml +4 -4
- data/README.md +19 -10
- data/changelog.md +13 -0
- data/communicator-docker.gemspec +1 -0
- data/lib/vagrant-communicator-docker/vagrant-communicator-docker.rb +18 -6
- data/lib/vagrant-communicator-docker/version.rb +1 -1
- metadata +23 -10
- data/communicator-docker-0.0.1.gem +0 -0
- data/communicator-docker-1.0.0.gem +0 -0
- data/communicator-docker-1.0.1.gem +0 -0
- data/communicator-docker-1.0.2.gem +0 -0
- data/communicator-docker-1.0.3.gem +0 -0
- data/communicator-docker-1.0.4.gem +0 -0
- data/communicator-docker-1.0.5.gem +0 -0
- data/communicator-docker-1.0.6.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7ef642fbce92f0ce6e2225ecac4660e3f906551d63b0021446dbdb596e8c840
|
4
|
+
data.tar.gz: 26a7589ad4ef448834bd3628e80b8c4dbca7abf4579ac8b7337bf00619e37248
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 311e39e32e0ff405e5647c5512cd89b594df6121b3b52e8731e57fce4beb6f0bfa9699a0de14e5d91c4d3f572c5d9de3cd0832987ed7e0372d5aeffe9a1abd2d
|
7
|
+
data.tar.gz: 28a962afb2eeabe69a495e7c958e474cbd7f46e98831d08b0760f1450b08eae912ccbf7d4d9edc6412dbe171228fdc0faf8657c4232df6057cdae02bf5499210
|
data/README.md
CHANGED
@@ -9,13 +9,18 @@ have SSH - They do not.
|
|
9
9
|
This communicator will make vagrant tasks that require SSH, interact with the docker instances, as if SSH exists, by
|
10
10
|
using the Docker API.
|
11
11
|
|
12
|
+
Shell scripts used during provisioning will also be executed, so will facilitate provisioning shel scripts as well (from 1.0.8).
|
13
|
+
Please note that these will always run as root inside the docker instance.
|
14
|
+
|
12
15
|
This has only been used in a Linux environment.
|
13
16
|
|
14
17
|
## Requirements
|
15
18
|
|
16
|
-
* Docker API gem
|
19
|
+
* Docker API gem. Although set as a dependency for the communicator, you *must* install this as a vagrant plugin, else it will not be located to be used by vagrant.
|
17
20
|
|
18
|
-
|
21
|
+
```
|
22
|
+
vagrant plugin install docker-api
|
23
|
+
```
|
19
24
|
|
20
25
|
## Installation
|
21
26
|
|
@@ -27,12 +32,9 @@ vagrant plugin install vagrant-communicator-docker
|
|
27
32
|
|
28
33
|
### Manual install
|
29
34
|
|
30
|
-
*
|
31
|
-
* install
|
35
|
+
* install using: ```vagrant plugin install vagrant-communicator-docker-[version].gem```
|
36
|
+
* install dependency ```vagrant plugin install docker-api``` (must be version 2.0.0 or greater)
|
32
37
|
|
33
|
-
```
|
34
|
-
curl https://raw.githubusercontent.com/ProxiBlue/vagrant-communicator-docker/master/communicator-docker-1.0.6.gem > communicator-docker-1.0.6.gem
|
35
|
-
```
|
36
38
|
|
37
39
|
## Usage
|
38
40
|
|
@@ -58,10 +60,17 @@ config.vm.define "database", primary: false do |database|
|
|
58
60
|
end
|
59
61
|
```
|
60
62
|
|
61
|
-
##
|
63
|
+
## Communication over TCP with remote Docker
|
64
|
+
|
65
|
+
By default the communicator connects with Docker over a local socket. You can override this, and allow remote Docker connection by setting an environment variable:
|
66
|
+
|
67
|
+
```DOCKER_HOST=tcp://[DOCKER HOST]:[PORT]```
|
68
|
+
|
69
|
+
example:
|
70
|
+
|
71
|
+
```DOCKER_HOST=tcp://127.0.0.1:2375``` vagrant up
|
62
72
|
|
63
|
-
|
64
|
-
Should be able to be extended to include a docker connection string to a tcp connection, but I have no need for that as yet, so not implemented.
|
73
|
+
## Shell
|
65
74
|
|
66
75
|
The default shell will be /bin/bash inside the docker container. You can override this using : ```vm.communicator.bash_shell = '/bin/sh';``` to use /bin/sh (or any other shell)
|
67
76
|
|
data/changelog.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
## Changelog
|
2
|
+
|
3
|
+
* 1.0.1: Initial public release
|
4
|
+
* 1.0.2: Adjust how command is run via docker api exec call
|
5
|
+
* 1.0.3: Add option to set shell to use
|
6
|
+
* 1.0.4: Just a version bump to force a new build, no code adjustments
|
7
|
+
* 1.0.5: Add shell_wait command to add delay for slow starting dockers
|
8
|
+
* 1.0.6: Docker API update how command is run via API: https://github.com/swipely/docker-api/commit/425036dd85e41f8d4e6ea95ee6d001d76af9c7d7
|
9
|
+
* 1.0.7: Change name to have 'vagrant-' prefix and push to rybygems
|
10
|
+
* 1.0.8: Adjust so provisioning shell scripts get renamed to allow them to execute
|
11
|
+
* 1.0.9: Add gemspec dependency
|
12
|
+
* 1.1.10: Add stdout response from scripts running
|
13
|
+
* 1.1.11: SOme more debug log messages
|
data/communicator-docker.gemspec
CHANGED
@@ -31,6 +31,7 @@ module VagrantPlugins
|
|
31
31
|
@container = Docker::Container.get(@machineID)
|
32
32
|
@logger.debug(@container.json)
|
33
33
|
# If we reached this point then we successfully connected
|
34
|
+
@logger.debug("DOCKER COMMUNICATOR connected to #{@machineID}")
|
34
35
|
true
|
35
36
|
rescue
|
36
37
|
@logger.debug("DOCKER COMMUNICATOR - Could not make connection to #{@machineID}")
|
@@ -56,6 +57,7 @@ module VagrantPlugins
|
|
56
57
|
end
|
57
58
|
rescue Timeout::Error
|
58
59
|
# We timed out, we failed.
|
60
|
+
@logger.debug("DOCKER COMMUNICATOR - Timeout to ready")
|
59
61
|
end
|
60
62
|
|
61
63
|
return false
|
@@ -89,8 +91,11 @@ module VagrantPlugins
|
|
89
91
|
# @param [String] to Path of where to save the file on the remote
|
90
92
|
# machine.
|
91
93
|
def upload(from, to)
|
92
|
-
|
94
|
+
to_folder = File.dirname(to)
|
95
|
+
from_filename = File.basename(from)
|
96
|
+
@logger.debug("DOCKER COMMUNICATOR - upload from: #{from} to: #{to_folder} from_filename: #{from_filename}")
|
93
97
|
@container.archive_in(from, File.dirname(to), overwrite: true)
|
98
|
+
execute("mv #{to_folder}/#{from_filename} #{to}")
|
94
99
|
end
|
95
100
|
|
96
101
|
# Execute a command on the remote machine. The exact semantics
|
@@ -109,13 +114,20 @@ module VagrantPlugins
|
|
109
114
|
# @return [Integer] Exit code of the command.
|
110
115
|
def execute(command, opts=nil)
|
111
116
|
begin
|
117
|
+
@logger.debug("DOCKER COMMUNICATOR - EXECUTE: #{command}")
|
112
118
|
wait_for_ready(@machine.config.communicator.bash_wait)
|
113
|
-
|
119
|
+
@logger.debug("DOCKER COMMUNICATOR - Ready to EXECUTE")
|
120
|
+
result = @container.exec([@machine.config.communicator.bash_shell, '-c' , command], tty: true)
|
114
121
|
@logger.debug(result)
|
115
|
-
|
122
|
+
if result.first.length > 0
|
123
|
+
result.first.first.each_line do |line|
|
124
|
+
yield :stdout, line if block_given?
|
125
|
+
end
|
126
|
+
end
|
116
127
|
return result.last
|
117
|
-
rescue
|
118
|
-
@logger.info("Error running command " + command + " on guest using shell #{@machine.config.communicator.bash_shell}")
|
128
|
+
rescue => e
|
129
|
+
@logger.info("DOCKER COMMUNICATOR: Error running command " + command + " on guest using shell #{@machine.config.communicator.bash_shell}")
|
130
|
+
@logger.error ([e.message]+e.backtrace).join($/)
|
119
131
|
end
|
120
132
|
return 255
|
121
133
|
end
|
@@ -137,7 +149,7 @@ module VagrantPlugins
|
|
137
149
|
#
|
138
150
|
# @see #execute
|
139
151
|
def test(command, opts=nil)
|
140
|
-
result = execute(command
|
152
|
+
result = execute(command)
|
141
153
|
if result == 0
|
142
154
|
return true
|
143
155
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-communicator-docker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucas van Staden
|
@@ -9,7 +9,27 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2019-11-01 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: docker-api
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.0.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.0'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.0.0
|
13
33
|
description: Simulate SSH using Docket API when provisioning vagrant machines that
|
14
34
|
use docker images without SSH
|
15
35
|
email: sales@proxiblue.com.au
|
@@ -22,14 +42,7 @@ files:
|
|
22
42
|
- LICENSE.txt
|
23
43
|
- README.md
|
24
44
|
- Rakefile
|
25
|
-
-
|
26
|
-
- communicator-docker-1.0.0.gem
|
27
|
-
- communicator-docker-1.0.1.gem
|
28
|
-
- communicator-docker-1.0.2.gem
|
29
|
-
- communicator-docker-1.0.3.gem
|
30
|
-
- communicator-docker-1.0.4.gem
|
31
|
-
- communicator-docker-1.0.5.gem
|
32
|
-
- communicator-docker-1.0.6.gem
|
45
|
+
- changelog.md
|
33
46
|
- communicator-docker.gemspec
|
34
47
|
- lib/vagrant-communicator-docker.rb
|
35
48
|
- lib/vagrant-communicator-docker/config.rb
|
Binary file
|
Binary file
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|