vagrant-service-manager 0.0.3 → 0.0.4
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/CHANGELOG.md +11 -0
- data/CONTRIBUTING.md +10 -11
- data/README.md +12 -1
- data/Vagrantfile +5 -2
- data/lib/vagrant-service-manager/action/setup_network.rb +38 -0
- data/lib/vagrant-service-manager/command.rb +5 -22
- data/lib/vagrant-service-manager/config.rb +5 -1
- data/lib/vagrant-service-manager/plugin.rb +11 -3
- data/lib/vagrant-service-manager/service.rb +36 -0
- data/lib/vagrant-service-manager/services/docker.rb +11 -20
- data/lib/vagrant-service-manager/services/open_shift.rb +35 -0
- data/lib/vagrant-service-manager/version.rb +1 -1
- data/plugins/guests/redhat/cap/osvariant.rb +17 -0
- data/plugins/guests/redhat/plugin.rb +3 -3
- metadata +6 -3
- data/plugins/guests/redhat/cap/flavor.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc29eabc39c834f0e04c2edfc3efe61179e88085
|
4
|
+
data.tar.gz: fc8f1062197a8cb676a88449839721c6a836dcc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce3218c6d2edefe64db604656e494cb65eaa8b3dc154243b26f029b435eca8ca17c07c326e41f5166265c4665f3079a5fb1f16d3073d3d7909b1743df7846f15
|
7
|
+
data.tar.gz: 2ec3abebad4070c80af5bcfe078977ec1fe49b650271a544163cf04ca77f85e4f4b447ece26706addcfe1662204b5066b540376c4fcc53620f56cb797c04d46b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v0.0.4 Mar 14, 2016
|
4
|
+
- Fix #101: vagrant-service-manager version 0.0.4 release @navidshaikh
|
5
|
+
- Remove manually scp for TLS keys and use machine.communicate.download @bexelbie
|
6
|
+
- Fix #87 #83: Supports starting OpenShift service as part of config @budhrg @bexelbie @navidshaikh
|
7
|
+
- Fix #95: Update hook code to call other middleware first @bexelbie
|
8
|
+
- Fix #94: Do not exit if box is not supported @navidshaikh
|
9
|
+
- Fixed missing word for plugin installation in README @budhrg
|
10
|
+
- Fix #91: Renaming the method name flavor to os_variant @lalatendumohanty
|
11
|
+
- Fix links, typos, formatting in CONTRIBUTING.md @budhrg
|
12
|
+
- Fix #16 and #72: Enable private networking for VirtualBox if not set @budhrg
|
13
|
+
|
3
14
|
## v0.0.3 Mar 01, 2016
|
4
15
|
- Fix #74: vagrant-service-manager plugin version 0.0.3 release @navidshaikh
|
5
16
|
- Fix #12 and #21: Restart docker service on 'vagrant up' @budhrg
|
data/CONTRIBUTING.md
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
# Contributing to vagrant-service-manager Plugin
|
2
2
|
|
3
3
|
The following is a set of guidelines for contributing to the
|
4
|
-
vagrant-service-manager plugin, which is hosted in the `Project Atomic
|
5
|
-
Organization
|
4
|
+
`vagrant-service-manager` plugin, which is hosted in the [`Project Atomic
|
5
|
+
Organization`](https://github.com/projectatomic) on GitHub.
|
6
6
|
|
7
|
-
These are just guidelines, please use your best
|
7
|
+
These are just guidelines, please use your best judgement and feel free
|
8
8
|
to propose changes to this document in a pull request.
|
9
9
|
|
10
|
-
At this point, this document is not complete, but
|
11
|
-
|
12
|
-
|
13
|
-
they will be added to this document.
|
10
|
+
At this point, this document is not complete, but as decisions are made on the
|
11
|
+
[`container-tools@redhat.com`](https://www.redhat.com/mailman/listinfo/container-tools)
|
12
|
+
mailing list they will be added to this document.
|
14
13
|
|
15
14
|
## Pull Requests
|
16
15
|
|
@@ -22,11 +21,11 @@ they will be added to this document.
|
|
22
21
|
* All changes must include an entry in the `CHANGELOG.md` in the
|
23
22
|
*unreleased* section describing the change
|
24
23
|
|
25
|
-
* All changes need 2 ACKs from maintainers before they will be merged. If
|
24
|
+
* All changes need at least 2 ACKs from maintainers before they will be merged. If
|
26
25
|
the author of the PR is a maintainer, their submission is considered
|
27
|
-
to be the first ACK. Therefore PRs from maintainers only need one
|
26
|
+
to be the first ACK. Therefore, PRs from maintainers only need one
|
28
27
|
additional ACK.
|
29
28
|
|
30
|
-
By "2 ACKs" we mean that
|
31
|
-
is a good one. The
|
29
|
+
By "2 ACKs" we mean that two maintainers must acknowledge that the change
|
30
|
+
is a good one. The 2<sup>nd</sup> person to ACK the PR should merge the PR with
|
32
31
|
a comment including their agreement.
|
data/README.md
CHANGED
@@ -36,6 +36,17 @@ producing complex, multi-container applications.
|
|
36
36
|
* `docker` is default service and does not require above configuration.
|
37
37
|
* Enable multiple services as comma separated list. Eg: 'docker, openshift'
|
38
38
|
|
39
|
+
4. Enable any specific options for the services you have selected:
|
40
|
+
|
41
|
+
* OpenShift
|
42
|
+
|
43
|
+
Specific versions can be specified using the following variables:
|
44
|
+
|
45
|
+
`config.servicemanager.openshift_docker_registry = "docker.io"` - What registry should be pulled from
|
46
|
+
`config.servicemanager.openshift_image_name = "openshift/origin"` - What image should be used
|
47
|
+
`config.servicemanager.openshift_image_tag = "v1.1.1"` - What image version should be used
|
48
|
+
|
49
|
+
|
39
50
|
5. Start the ADB using `vagrant up`. Users of the ADB may wish to consult the
|
40
51
|
[Installation Documentation](https://github.com/projectatomic/adb-atomic-developer-bundle/blob/master/docs/installing.rst).
|
41
52
|
|
@@ -118,7 +129,7 @@ $ bundle exec rake build
|
|
118
129
|
|
119
130
|
Install the plugin using:
|
120
131
|
|
121
|
-
vagrant install pkg/<gem name>
|
132
|
+
vagrant plugin install pkg/<gem name>
|
122
133
|
|
123
134
|
|
124
135
|
## Builds
|
data/Vagrantfile
CHANGED
@@ -13,11 +13,14 @@ Vagrant.configure(2) do |config|
|
|
13
13
|
|
14
14
|
config.vm.box = "projectatomic/adb"
|
15
15
|
|
16
|
-
config.vm.network "private_network", type: "dhcp"
|
17
|
-
|
18
16
|
# This is the default setup
|
19
17
|
# config.servicemanager.services = 'docker'
|
20
18
|
|
21
19
|
# Enable multiple services as comma separated list.
|
22
20
|
# config.servicemanager.services = 'docker, openshift'
|
21
|
+
|
22
|
+
# Specific versions can be specified using the following variables for OpenShift service:
|
23
|
+
# config.servicemanager.openshift_docker_registry = "docker.io"
|
24
|
+
# config.servicemanager.openshift_image_name = "openshift/origin"
|
25
|
+
# config.servicemanager.openshift_image_tag = "v1.1.1"
|
23
26
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module ServiceManager
|
3
|
+
module Action
|
4
|
+
class SetupNetwork
|
5
|
+
|
6
|
+
def initialize(app, env)
|
7
|
+
@app = app
|
8
|
+
@machine = env[:machine]
|
9
|
+
@ui = env[:ui]
|
10
|
+
end
|
11
|
+
|
12
|
+
def call(env)
|
13
|
+
add_private_network if virtualbox? && default_network_exists?
|
14
|
+
@app.call(env)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def virtualbox?
|
20
|
+
@machine.provider.instance_of?(VagrantPlugins::ProviderVirtualBox::Provider)
|
21
|
+
end
|
22
|
+
|
23
|
+
def default_network_exists?
|
24
|
+
@machine.config.vm.networks.length == 1
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_private_network
|
28
|
+
@ui.info <<-MSG
|
29
|
+
When using virtualbox, a non-NAT network interface is required.
|
30
|
+
Adding a private network using DHCP
|
31
|
+
MSG
|
32
|
+
@machine.config.vm.network :private_network, type: :dhcp
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,8 +1,5 @@
|
|
1
1
|
require_relative 'os'
|
2
2
|
|
3
|
-
require 'net/scp'
|
4
|
-
require 'net/ssh'
|
5
|
-
|
6
3
|
module Vagrant
|
7
4
|
module ServiceManager
|
8
5
|
class Command < Vagrant.plugin(2, :command)
|
@@ -100,20 +97,6 @@ Verb:
|
|
100
97
|
exit exit_status
|
101
98
|
end
|
102
99
|
|
103
|
-
def copy_from_box(hIP, hport, husername, hprivate_key_path, source, destination)
|
104
|
-
# This method should be extended to take an option 'if recursive'
|
105
|
-
|
106
|
-
# read the private key
|
107
|
-
fp = File.open(hprivate_key_path)
|
108
|
-
pk_data = [fp.read]
|
109
|
-
fp.close
|
110
|
-
|
111
|
-
# create the ssh session
|
112
|
-
Net::SSH.start(hIP, husername, :port => hport, :key_data => pk_data, :keys_only => TRUE) do |ssh|
|
113
|
-
ssh.scp.download(source, destination, :recursive => TRUE)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
100
|
def check_if_a_service_is_running?(service)
|
118
101
|
command = "systemctl status #{service}"
|
119
102
|
with_target_vms(nil, {:single_target=>true}) do |machine|
|
@@ -192,14 +175,14 @@ Verb:
|
|
192
175
|
# First, get the TLS Certificates, if needed
|
193
176
|
if !File.directory?(secrets_path) then
|
194
177
|
|
195
|
-
#
|
196
|
-
|
178
|
+
# Create the directory
|
179
|
+
Dir.mkdir(secrets_path)
|
197
180
|
|
198
181
|
# copy the required client side certs from inside the box to host machine
|
199
182
|
@env.ui.info("# Copying TLS certificates to #{secrets_path}")
|
200
|
-
|
201
|
-
|
202
|
-
|
183
|
+
machine.communicate.download("/home/vagrant/.docker/ca.pem", "#{secrets_path}")
|
184
|
+
machine.communicate.download("/home/vagrant/.docker/cert.pem", "#{secrets_path}")
|
185
|
+
machine.communicate.download("/home/vagrant/.docker/key.pem", "#{secrets_path}")
|
203
186
|
end
|
204
187
|
|
205
188
|
# display the information, irrespective of the copy operation
|
@@ -3,9 +3,13 @@ require 'set'
|
|
3
3
|
module Vagrant
|
4
4
|
module ServiceManager
|
5
5
|
SERVICES = ['docker', 'openshift']
|
6
|
+
CONFIG_KEYS = [
|
7
|
+
:services, :openshift_docker_registry,
|
8
|
+
:openshift_image_name, :openshift_image_tag
|
9
|
+
]
|
6
10
|
|
7
11
|
class Config < Vagrant.plugin('2', :config)
|
8
|
-
attr_accessor
|
12
|
+
attr_accessor(*CONFIG_KEYS)
|
9
13
|
|
10
14
|
DEFAULTS = {
|
11
15
|
services: 'docker'
|
@@ -1,5 +1,6 @@
|
|
1
|
-
# Loads all
|
2
|
-
Dir["#{File.dirname(__FILE__)}/
|
1
|
+
# Loads all actions
|
2
|
+
Dir["#{File.dirname(__FILE__)}/action/*.rb"].each { |f| require_relative f }
|
3
|
+
require_relative 'service'
|
3
4
|
|
4
5
|
module Vagrant
|
5
6
|
module ServiceManager
|
@@ -18,7 +19,14 @@ module Vagrant
|
|
18
19
|
end
|
19
20
|
|
20
21
|
action_hook(:servicemanager, :machine_action_up) do |hook|
|
21
|
-
hook.
|
22
|
+
hook.before(VagrantPlugins::ProviderVirtualBox::Action::Network, setup_network)
|
23
|
+
hook.after(Vagrant::Action::Builtin::SyncedFolders, Service)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.setup_network
|
27
|
+
Vagrant::Action::Builder.new.tap do |b|
|
28
|
+
b.use Action::SetupNetwork
|
29
|
+
end
|
22
30
|
end
|
23
31
|
end
|
24
32
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Loads all services
|
2
|
+
Dir["#{File.dirname(__FILE__)}/services/*.rb"].each { |f| require_relative f }
|
3
|
+
|
4
|
+
module Vagrant
|
5
|
+
module ServiceManager
|
6
|
+
SUPPORTED_BOXES = ['adb', 'cdk']
|
7
|
+
|
8
|
+
class Service
|
9
|
+
def initialize(app, env)
|
10
|
+
@app = app
|
11
|
+
@machine = env[:machine]
|
12
|
+
@ui = env[:ui]
|
13
|
+
@services = @machine.config.servicemanager.services.split(',').map(&:strip)
|
14
|
+
@docker_hook = Docker.new(@machine, @ui)
|
15
|
+
@openshift_hook = OpenShift.new(@machine, @ui)
|
16
|
+
end
|
17
|
+
|
18
|
+
def call(env)
|
19
|
+
@app.call(env)
|
20
|
+
|
21
|
+
if SUPPORTED_BOXES.include? @machine.guest.capability(:os_variant)
|
22
|
+
@docker_hook.execute
|
23
|
+
|
24
|
+
if @machine.guest.capability(:os_variant) == "cdk" and @services.length == 0
|
25
|
+
# openshift to be started by default for CDK
|
26
|
+
@openshift_hook.execute
|
27
|
+
end
|
28
|
+
if @services.include? "openshift"
|
29
|
+
# Start OpenShift service if it is configured in Vagrantfile
|
30
|
+
@openshift_hook.execute
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,27 +1,18 @@
|
|
1
1
|
module Vagrant
|
2
2
|
module ServiceManager
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
@app = app
|
9
|
-
@machine = env[:machine]
|
10
|
-
@ui = env[:ui]
|
11
|
-
end
|
3
|
+
class Docker
|
4
|
+
def initialize(machine, ui)
|
5
|
+
@machine = machine
|
6
|
+
@ui = ui
|
7
|
+
end
|
12
8
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
exit 126
|
20
|
-
end
|
21
|
-
end
|
9
|
+
def execute
|
10
|
+
command = "sudo rm /etc/docker/ca.pem && sudo systemctl restart docker"
|
11
|
+
@machine.communicate.execute(command) do |type, data|
|
12
|
+
if type == :stderr
|
13
|
+
@ui.error(data)
|
14
|
+
exit 126
|
22
15
|
end
|
23
|
-
|
24
|
-
@app.call(env)
|
25
16
|
end
|
26
17
|
end
|
27
18
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module ServiceManager
|
3
|
+
class OpenShift
|
4
|
+
def initialize(machine, ui)
|
5
|
+
@machine = machine
|
6
|
+
@ui = ui
|
7
|
+
@extra_cmd = build_extra_command
|
8
|
+
end
|
9
|
+
|
10
|
+
def execute
|
11
|
+
full_cmd = "#{@extra_cmd} sccli openshift"
|
12
|
+
|
13
|
+
@machine.communicate.sudo(full_cmd) do |type, data|
|
14
|
+
if type == :stderr
|
15
|
+
@ui.error(data)
|
16
|
+
exit 126
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def build_extra_command
|
24
|
+
cmd = ''
|
25
|
+
CONFIG_KEYS.select {|e| e[/^openshift_/] }.each do |key|
|
26
|
+
unless @machine.config.servicemanager.send(key).nil?
|
27
|
+
env_name = key.to_s.gsub(/openshift_/,'').upcase
|
28
|
+
cmd += "#{env_name}='#{@machine.config.servicemanager.send(key)}' "
|
29
|
+
end
|
30
|
+
end
|
31
|
+
cmd.chop
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module GuestRedHat
|
3
|
+
module Cap
|
4
|
+
class OsVariant
|
5
|
+
def self.os_variant(machine)
|
6
|
+
command = "grep VARIANT_ID /etc/os-release"
|
7
|
+
# TODO: execute efficient command to solve this
|
8
|
+
if machine.communicate.test(command) # test if command is exits with code 0
|
9
|
+
machine.communicate.execute(command) do |type, data|
|
10
|
+
return data.chomp.gsub(/"/, '').split("=").last
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -3,9 +3,9 @@ require 'vagrant'
|
|
3
3
|
module VagrantPlugins
|
4
4
|
module GuestRedHat
|
5
5
|
class Plugin < Vagrant.plugin('2')
|
6
|
-
guest_capability('redhat', '
|
7
|
-
require_relative 'cap/
|
8
|
-
Cap::
|
6
|
+
guest_capability('redhat', 'os_variant') do
|
7
|
+
require_relative 'cap/osvariant'
|
8
|
+
Cap::OsVariant
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-service-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Exelbierd
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-03-
|
12
|
+
date: 2016-03-15 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Provides setup information, including environment variables and certificates,
|
15
15
|
required to access services provided by ADB/CDK.
|
@@ -31,13 +31,16 @@ files:
|
|
31
31
|
- TODO
|
32
32
|
- Vagrantfile
|
33
33
|
- lib/vagrant-service-manager.rb
|
34
|
+
- lib/vagrant-service-manager/action/setup_network.rb
|
34
35
|
- lib/vagrant-service-manager/command.rb
|
35
36
|
- lib/vagrant-service-manager/config.rb
|
36
37
|
- lib/vagrant-service-manager/os.rb
|
37
38
|
- lib/vagrant-service-manager/plugin.rb
|
39
|
+
- lib/vagrant-service-manager/service.rb
|
38
40
|
- lib/vagrant-service-manager/services/docker.rb
|
41
|
+
- lib/vagrant-service-manager/services/open_shift.rb
|
39
42
|
- lib/vagrant-service-manager/version.rb
|
40
|
-
- plugins/guests/redhat/cap/
|
43
|
+
- plugins/guests/redhat/cap/osvariant.rb
|
41
44
|
- plugins/guests/redhat/plugin.rb
|
42
45
|
- vagrant-service-manager.gemspec
|
43
46
|
- vagrant-service-manager.spec
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module VagrantPlugins
|
2
|
-
module GuestRedHat
|
3
|
-
module Cap
|
4
|
-
class Flavor
|
5
|
-
def self.flavor(machine)
|
6
|
-
machine.communicate.sudo("grep VARIANT_ID /etc/os-release") do |type, data|
|
7
|
-
if type == :stderr
|
8
|
-
@env.ui.error(data)
|
9
|
-
exit 126
|
10
|
-
end
|
11
|
-
return data.chomp.gsub(/"/, '').split("=").last
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|