syncwrap 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.rdoc +30 -0
- data/Manifest.txt +14 -0
- data/README.rdoc +15 -5
- data/Rakefile +3 -14
- data/lib/syncwrap/base.rb +1 -1
- data/lib/syncwrap/components/amazon_linux.rb +50 -0
- data/lib/syncwrap/components/arch.rb +37 -0
- data/lib/syncwrap/components/bundle.rb +111 -0
- data/lib/syncwrap/components/bundled_iyyov_daemon.rb +130 -0
- data/lib/syncwrap/components/bundler_gem.rb +47 -0
- data/lib/syncwrap/components/centos.rb +28 -0
- data/lib/syncwrap/components/cruby_vm.rb +3 -6
- data/lib/syncwrap/components/debian.rb +89 -0
- data/lib/syncwrap/components/hashdot.rb +6 -4
- data/lib/syncwrap/components/iyyov.rb +2 -2
- data/lib/syncwrap/components/jruby_vm.rb +9 -5
- data/lib/syncwrap/components/network.rb +44 -24
- data/lib/syncwrap/components/open_jdk.rb +23 -7
- data/lib/syncwrap/components/postgresql.rb +77 -31
- data/lib/syncwrap/components/puma.rb +146 -0
- data/lib/syncwrap/components/qpid.rb +1 -1
- data/lib/syncwrap/components/rake_gem.rb +46 -0
- data/lib/syncwrap/components/rhel.rb +7 -3
- data/lib/syncwrap/components/run_user.rb +7 -3
- data/lib/syncwrap/components/source_tree.rb +128 -0
- data/lib/syncwrap/components/tarpit_gem.rb +60 -0
- data/lib/syncwrap/components/ubuntu.rb +14 -55
- data/lib/syncwrap/components/users.rb +1 -2
- data/lib/syncwrap/distro.rb +5 -5
- data/lib/syncwrap/ruby_support.rb +20 -4
- data/lib/syncwrap/version_support.rb +62 -0
- data/lib/syncwrap.rb +11 -0
- data/sync/postgresql/postgresql.conf.erb +4 -4
- data/sync/var/iyyov/default/bundled_daemon.rb.erb +31 -0
- data/test/test_components.rb +77 -18
- data/test/test_version_support.rb +65 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31766d4da53365ca66e620737ad154a7ffdcbac9
|
4
|
+
data.tar.gz: b18b461aaf1ece566be69c71d217113aa8da8473
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c95179c17e29b9d1fa2e0690481f7e9548db9c19b20e390995661f82e5bbdd0517c7f7b032d87c55032086ce069497199e0aa08314d14afcbd4f799f048104a
|
7
|
+
data.tar.gz: 6b9fe9ed21313705a4604214d4bea5f88d79ff314b3898933383b44269af453454379452733f95fab4228d3f8b253783b6cdd6c6d78e9541e2af95ec99667da5
|
data/History.rdoc
CHANGED
@@ -1,3 +1,33 @@
|
|
1
|
+
=== 2.3.0 (2014-9-20)
|
2
|
+
* Add SyncWrap::Debian (with Ubuntu as child), SyncWrap::CentOS and
|
3
|
+
SyncWrap::AmazonLinux (with RHEL as parent) to form a Distro
|
4
|
+
hierarchy with various version properties. Extends distribution
|
5
|
+
support and enables better distro-specific defaults (for example in
|
6
|
+
PostgreSQL).
|
7
|
+
* Add Debian Network and PostgreSQL support
|
8
|
+
* SyncWrap::OpenJDK notes on Debian JDK bloat from X11
|
9
|
+
* Add preliminary (dev environment) support for SyncWrap::Arch Linux,
|
10
|
+
including support in OpenJDK and Hashdot.
|
11
|
+
* Add SyncWrap::SourceTree and SyncWrap::Bundle components
|
12
|
+
* Add SyncWrap::Puma component
|
13
|
+
* Add SyncWrap::BundlerGem, SyncWrap::RakeGem, SyncWrap::TarpitGem
|
14
|
+
components
|
15
|
+
* Add SyncWrap::BundledIyyovDaemon for Iyyov support for bundled Iyyov
|
16
|
+
daemons
|
17
|
+
* Fix JRubyVM#gem_install version check
|
18
|
+
* Add RubySupport#gem_install support for user_install as specific
|
19
|
+
user.
|
20
|
+
* Protect various component accessors which should not be visible at
|
21
|
+
the Context level.
|
22
|
+
* The SyncWrap::PostgreSQL#version deprecated/aliased in favor of
|
23
|
+
SyncWrap::PostgreSQL#pg_version
|
24
|
+
* SyncWrap::RunUser#make_dir deprecated/aliased in favor of
|
25
|
+
SyncWrap::RunUser#mkdir_run_user
|
26
|
+
* Introduce SyncWrap::VersionSupport and use for array-version
|
27
|
+
comparisons
|
28
|
+
* Add TestComponents bash validate assertions, and random permutation
|
29
|
+
for changes
|
30
|
+
|
1
31
|
=== 2.2.0 (2014-7-13)
|
2
32
|
* New SyncWrap::Component#sh :pipefail option to pass bash flag "-o
|
3
33
|
pipefail" to return the first non-zero command return from a
|
data/Manifest.txt
CHANGED
@@ -30,8 +30,16 @@ lib/syncwrap/path_util.rb
|
|
30
30
|
lib/syncwrap/rsync.rb
|
31
31
|
lib/syncwrap/ruby_support.rb
|
32
32
|
lib/syncwrap/shell.rb
|
33
|
+
lib/syncwrap/version_support.rb
|
34
|
+
lib/syncwrap/components/amazon_linux.rb
|
35
|
+
lib/syncwrap/components/arch.rb
|
36
|
+
lib/syncwrap/components/bundle.rb
|
37
|
+
lib/syncwrap/components/bundled_iyyov_daemon.rb
|
38
|
+
lib/syncwrap/components/bundler_gem.rb
|
39
|
+
lib/syncwrap/components/centos.rb
|
33
40
|
lib/syncwrap/components/commercial_jdk.rb
|
34
41
|
lib/syncwrap/components/cruby_vm.rb
|
42
|
+
lib/syncwrap/components/debian.rb
|
35
43
|
lib/syncwrap/components/etc_hosts.rb
|
36
44
|
lib/syncwrap/components/geminabox.rb
|
37
45
|
lib/syncwrap/components/hashdot.rb
|
@@ -42,9 +50,13 @@ lib/syncwrap/components/mdraid.rb
|
|
42
50
|
lib/syncwrap/components/network.rb
|
43
51
|
lib/syncwrap/components/open_jdk.rb
|
44
52
|
lib/syncwrap/components/postgresql.rb
|
53
|
+
lib/syncwrap/components/puma.rb
|
45
54
|
lib/syncwrap/components/qpid.rb
|
55
|
+
lib/syncwrap/components/rake_gem.rb
|
46
56
|
lib/syncwrap/components/rhel.rb
|
47
57
|
lib/syncwrap/components/run_user.rb
|
58
|
+
lib/syncwrap/components/source_tree.rb
|
59
|
+
lib/syncwrap/components/tarpit_gem.rb
|
48
60
|
lib/syncwrap/components/ubuntu.rb
|
49
61
|
lib/syncwrap/components/users.rb
|
50
62
|
sync/etc/gemrc
|
@@ -70,6 +82,7 @@ sync/src/hashdot/profiles/jruby.hdp.erb
|
|
70
82
|
sync/src/hashdot/profiles/shortlived.hdp
|
71
83
|
sync/usr/local/etc/qpidd.conf
|
72
84
|
sync/var/iyyov/jobs.rb.erb
|
85
|
+
sync/var/iyyov/default/bundled_daemon.rb.erb
|
73
86
|
sync/var/iyyov/default/config.rb
|
74
87
|
sync/var/iyyov/default/daemon.rb.erb
|
75
88
|
test/muddled_sync.rb
|
@@ -81,6 +94,7 @@ test/test_rsync.rb
|
|
81
94
|
test/test_shell.rb
|
82
95
|
test/test_space.rb
|
83
96
|
test/test_space_main.rb
|
97
|
+
test/test_version_support.rb
|
84
98
|
test/zfile
|
85
99
|
test/sync/d1/bar
|
86
100
|
test/sync/d1/foo.erb
|
data/README.rdoc
CHANGED
@@ -79,11 +79,15 @@ examples directory and LAYOUT.
|
|
79
79
|
|
80
80
|
== Components
|
81
81
|
|
82
|
-
|
83
|
-
|
82
|
+
Component hierarchy implementing SyncWrap::Distro, for common methods
|
83
|
+
like dist_install and other distribution-specific behaviors:
|
84
84
|
|
85
|
-
* SyncWrap::
|
86
|
-
* SyncWrap::
|
85
|
+
* SyncWrap::Arch (limited support)
|
86
|
+
* SyncWrap::Debian
|
87
|
+
* SyncWrap::Ubuntu
|
88
|
+
* SyncWrap::RHEL
|
89
|
+
* SyncWrap::CentOS
|
90
|
+
* SyncWrap::AmazonLinux
|
87
91
|
|
88
92
|
Components implementing \#install:
|
89
93
|
|
@@ -104,6 +108,13 @@ Components implementing \#install:
|
|
104
108
|
|
105
109
|
* SyncWrap::JRubyVM and/or SyncWrap::CRubyVM (MRI, from source)
|
106
110
|
|
111
|
+
* SyncWrap::BundlerGem, SyncWrap::RakeGem, SyncWrap::TarpitGem - base
|
112
|
+
(pre-bundle) Rubygems
|
113
|
+
|
114
|
+
* SyncWrap::SourceTree, SyncWrap::Bundle
|
115
|
+
|
116
|
+
* SyncWrap::Puma
|
117
|
+
|
107
118
|
* SyncWrap::Iyyov - job scheduler and process monitor with
|
108
119
|
utilities for SyncWrap::IyyovDaemon deployment.
|
109
120
|
|
@@ -116,7 +127,6 @@ Components implementing \#install:
|
|
116
127
|
The above only represents my more recent project needs. Pull requests
|
117
128
|
to add, for example, the following would be well received:
|
118
129
|
|
119
|
-
* Bundler install, for example for Sinatra apps
|
120
130
|
* Bluepill
|
121
131
|
* Rails (extra credit: without git fetch or per-host asset compile)
|
122
132
|
* Nginx
|
data/Rakefile
CHANGED
@@ -9,18 +9,7 @@ RJack::TarPit.new( 'syncwrap' ).define_tasks
|
|
9
9
|
|
10
10
|
desc "Upload RDOC to Amazon S3 (rdoc.gravitext.com/syncwrap, Oregon)"
|
11
11
|
task :publish_rdoc => [ :clean, :rerdoc ] do
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
'*.js' => 'text/javascript',
|
16
|
-
'*.png' => 'image/png',
|
17
|
-
'*.gif' => 'image/gif',
|
18
|
-
}
|
19
|
-
mime_types.each do |pat, mime_type|
|
20
|
-
sh <<-SH
|
21
|
-
s3cmd sync -P --exclude '*.*' --include '#{pat}' \
|
22
|
-
-m '#{mime_type}' \
|
23
|
-
doc/ s3://rdoc.gravitext.com/syncwrap/
|
24
|
-
SH
|
25
|
-
end
|
12
|
+
sh <<-SH
|
13
|
+
aws s3 sync --acl public-read doc/ s3://rdoc.gravitext.com/syncwrap/
|
14
|
+
SH
|
26
15
|
end
|
data/lib/syncwrap/base.rb
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2011-2014 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You may
|
6
|
+
# obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'syncwrap/components/rhel'
|
18
|
+
|
19
|
+
module SyncWrap
|
20
|
+
|
21
|
+
# Customizations for Amazon Linux.
|
22
|
+
class AmazonLinux < RHEL
|
23
|
+
|
24
|
+
# Amazon Linux version, i.e. '2014.03.2'. No default value.
|
25
|
+
attr_accessor :amazon_version
|
26
|
+
|
27
|
+
alias :distro_version :amazon_version
|
28
|
+
|
29
|
+
# Return RHEL#rhel_version if specified, or provide comparable
|
30
|
+
# default RHEL version if #amazon_vesion is specified.
|
31
|
+
#
|
32
|
+
# History of Amazon Linux releases:
|
33
|
+
#
|
34
|
+
# * 2011.09 upgraded to glibc 2.12, parity with RHEL 6
|
35
|
+
#
|
36
|
+
# * 2014.03 upgraded to 2.17, parity with RHEL 7
|
37
|
+
#
|
38
|
+
# Note however that Amazon is still behind RHEL 7 in other
|
39
|
+
# respects (ex: systemd), and is ahead on other packages.
|
40
|
+
def rhel_version
|
41
|
+
super ||
|
42
|
+
( amazon_version &&
|
43
|
+
( ( version_gte?( amazon_version, [2014,3] ) && '7' ) ||
|
44
|
+
( version_gte?( amazon_version, [2011,9] ) && '6' ) ||
|
45
|
+
'5' ) )
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2011-2014 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You may
|
6
|
+
# obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'syncwrap/component'
|
18
|
+
require 'syncwrap/distro'
|
19
|
+
|
20
|
+
module SyncWrap
|
21
|
+
|
22
|
+
# \Arch Linux distro, partial implementation for pacman.
|
23
|
+
class Arch < Component
|
24
|
+
include SyncWrap::Distro
|
25
|
+
|
26
|
+
def dist_install( *pkgs )
|
27
|
+
opts = pkgs.last.is_a?( Hash ) && pkgs.pop || {}
|
28
|
+
sudo "pacman -S --noconfirm #{pkgs.join ' '}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def dist_uninstall( *pkgs )
|
32
|
+
sudo "pacman -R --noconfirm #{pkgs.join ' '}"
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2011-2014 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You may
|
6
|
+
# obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'syncwrap/component'
|
18
|
+
|
19
|
+
require 'syncwrap/git_help'
|
20
|
+
require 'syncwrap/path_util'
|
21
|
+
|
22
|
+
module SyncWrap
|
23
|
+
|
24
|
+
# Provision to `bundle install`, optionally triggered by a state change key.
|
25
|
+
#
|
26
|
+
# Host component dependencies: RunUser?, SourceTree?, BundlerGem
|
27
|
+
class Bundle < Component
|
28
|
+
include PathUtil
|
29
|
+
|
30
|
+
# Path to the Gemfile(.lock)
|
31
|
+
# (Default: SourceTree#remote_source_path)
|
32
|
+
attr_writer :bundle_path
|
33
|
+
|
34
|
+
def bundle_path
|
35
|
+
@bundle_path || remote_source_path
|
36
|
+
end
|
37
|
+
|
38
|
+
# The path to install bin stubs, if any. If relative, it is
|
39
|
+
# relative to #bundle_path.
|
40
|
+
# (Default: sbin; directory in #bundle_path)
|
41
|
+
# The default is purposefully not 'bin', so as to avoid clashes
|
42
|
+
# with source trees that already have a 'bin', for example that
|
43
|
+
# contain gem source as well.
|
44
|
+
attr_accessor :bundle_install_bin_stubs
|
45
|
+
|
46
|
+
protected
|
47
|
+
|
48
|
+
# An optional state key to check, indicating changes requiring
|
49
|
+
# bundle install (Default: nil; Example: :source_tree)
|
50
|
+
attr_accessor :change_key
|
51
|
+
|
52
|
+
# Hash of environment key/values to set on call to bundle install
|
53
|
+
# (Default: {} -> none)
|
54
|
+
attr_accessor :bundle_install_env
|
55
|
+
|
56
|
+
# User to perform the bundle install
|
57
|
+
# (Default: RunUser#run_user)
|
58
|
+
attr_writer :bundle_install_user
|
59
|
+
|
60
|
+
def bundle_install_user
|
61
|
+
@bundle_install_user || run_user
|
62
|
+
end
|
63
|
+
|
64
|
+
# The path to bundle install dependencies. If relative, it is
|
65
|
+
# relative to #bundle_path.
|
66
|
+
# (Default: ~/.gem -> the #bundle_install_user gems)
|
67
|
+
attr_accessor :bundle_install_path
|
68
|
+
|
69
|
+
public
|
70
|
+
|
71
|
+
def initialize( opts = {} )
|
72
|
+
@change_key = nil
|
73
|
+
@bundle_path = nil
|
74
|
+
@bundle_install_env = {}
|
75
|
+
@bundle_install_path = '~/.gem'
|
76
|
+
@bundle_install_user = nil
|
77
|
+
@bundle_install_bin_stubs = 'sbin'
|
78
|
+
super
|
79
|
+
end
|
80
|
+
|
81
|
+
def install
|
82
|
+
bundle_install if change_key.nil? || state[ change_key ]
|
83
|
+
end
|
84
|
+
|
85
|
+
def bundle_install
|
86
|
+
sh( "( cd #{bundle_path}", close: ')', user: bundle_install_user ) do
|
87
|
+
cmd = [ preamble, bundle_command, '_' + bundler_version + '_', 'install' ]
|
88
|
+
|
89
|
+
if bundle_install_path
|
90
|
+
cmd += [ '--path', bundle_install_path ]
|
91
|
+
end
|
92
|
+
|
93
|
+
if bundle_install_bin_stubs
|
94
|
+
cmd += [ '--binstubs', bundle_install_bin_stubs ]
|
95
|
+
end
|
96
|
+
|
97
|
+
sh( cmd.join(' '), user: bundle_install_user )
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
protected
|
102
|
+
|
103
|
+
def preamble
|
104
|
+
setters = bundle_install_env.map do |k,v|
|
105
|
+
k.to_s + '="' + v.gsub( /["\\]/ ) { |c| '\\' + c } + '"'
|
106
|
+
end
|
107
|
+
setters.join( ' ' )
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2011-2014 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You may
|
6
|
+
# obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'syncwrap/component'
|
18
|
+
|
19
|
+
module SyncWrap
|
20
|
+
|
21
|
+
# Provision a source/bundle installed, Iyyov launched and monitored jruby
|
22
|
+
# daemon using a standard set of conventions. Can be used directly
|
23
|
+
# in the common case, or sub-classed as needed.
|
24
|
+
#
|
25
|
+
# Two :sync_paths files are searched for deployment: a config.rb and
|
26
|
+
# a jobs.d/<name>.rb. If concrete or .erb variants of these are not
|
27
|
+
# found than an (empty) default/config.rb and a generic
|
28
|
+
# default/bundled_daemon.rb.erb are used. Again, these will work in
|
29
|
+
# the common case.
|
30
|
+
#
|
31
|
+
# Host component dependencies: RunUser, <ruby>, Iyyov
|
32
|
+
class BundledIyyovDaemon < Component
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
# The daemon process name. (Default: SourceTree#remote_dir)
|
37
|
+
attr_writer :name
|
38
|
+
|
39
|
+
def name
|
40
|
+
@name || remote_dir
|
41
|
+
end
|
42
|
+
|
43
|
+
# An optional secondary instance name, useful if running more than
|
44
|
+
# one of 'name' on a host. (Default: nil)
|
45
|
+
attr_accessor :instance
|
46
|
+
|
47
|
+
# An optional state key to check, indicating changes requiring
|
48
|
+
# a daemon restart (Default: nil; Example: :source_tree)
|
49
|
+
attr_accessor :change_key
|
50
|
+
|
51
|
+
public
|
52
|
+
|
53
|
+
def initialize( opts = {} )
|
54
|
+
@name = nil
|
55
|
+
@instance = nil
|
56
|
+
@change_key = nil
|
57
|
+
|
58
|
+
super
|
59
|
+
end
|
60
|
+
|
61
|
+
def install
|
62
|
+
standard_install
|
63
|
+
end
|
64
|
+
|
65
|
+
protected
|
66
|
+
|
67
|
+
def standard_install
|
68
|
+
conf_changes = rput_service_config
|
69
|
+
|
70
|
+
# The job_source may contain more than just this daemon
|
71
|
+
# (i.e. additional tasks, etc.) Even if this is the
|
72
|
+
# default/daemon.rb.erb, it might have just been changed to
|
73
|
+
# that. So go ahead an rput in any case.
|
74
|
+
job_changes = rput( job_source,
|
75
|
+
"#{iyyov_run_dir}/jobs.d/#{name_instance}.rb",
|
76
|
+
user: run_user )
|
77
|
+
job_changes += iyyov_install_jobs
|
78
|
+
|
79
|
+
src_changes = ( change_key && state[ change_key ] ) || []
|
80
|
+
|
81
|
+
if ( ( src_changes + conf_changes ).length > 0 ||
|
82
|
+
state[ :hashdot_updated ] ||
|
83
|
+
state[ :imaging ] )
|
84
|
+
rudo( "kill $(< #{daemon_service_dir}/#{name}.pid ) || true" )
|
85
|
+
end
|
86
|
+
|
87
|
+
conf_changes + job_changes
|
88
|
+
end
|
89
|
+
|
90
|
+
def rput_service_config
|
91
|
+
rput( config_source, "#{daemon_service_dir}/config.rb", user: run_user )
|
92
|
+
end
|
93
|
+
|
94
|
+
def daemon_service_dir
|
95
|
+
service_dir( name, instance )
|
96
|
+
end
|
97
|
+
|
98
|
+
def exe_path
|
99
|
+
File.join( daemon_service_dir, 'init', name )
|
100
|
+
end
|
101
|
+
|
102
|
+
def name_instance
|
103
|
+
[ name, instance ].compact.join( '-' )
|
104
|
+
end
|
105
|
+
|
106
|
+
def job_source
|
107
|
+
sjob = "var/iyyov/jobs.d/#{name_instance}.rb"
|
108
|
+
unless find_source( sjob )
|
109
|
+
sjob = "var/iyyov/jobs.d/#{name}.rb"
|
110
|
+
unless find_source( sjob )
|
111
|
+
sjob = "var/iyyov/default/bundled_daemon.rb.erb"
|
112
|
+
end
|
113
|
+
end
|
114
|
+
sjob
|
115
|
+
end
|
116
|
+
|
117
|
+
def config_source
|
118
|
+
sconf = "var/#{name_instance}/config.rb"
|
119
|
+
unless find_source( sconf )
|
120
|
+
sconf = "var/#{name}/config.rb"
|
121
|
+
unless find_source( sconf )
|
122
|
+
sconf = 'var/iyyov/default/config.rb'
|
123
|
+
end
|
124
|
+
end
|
125
|
+
sconf
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2011-2014 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You may
|
6
|
+
# obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'syncwrap/component'
|
18
|
+
|
19
|
+
module SyncWrap
|
20
|
+
|
21
|
+
# Provision for the bundler rubygem and its (j)bundle command
|
22
|
+
#
|
23
|
+
# Host component dependencies: <ruby>
|
24
|
+
#
|
25
|
+
class BundlerGem < Component
|
26
|
+
|
27
|
+
# Bundler version to install (Default: 1.6.5)
|
28
|
+
attr_accessor :bundler_version
|
29
|
+
|
30
|
+
def initialize( opts = {} )
|
31
|
+
@bundler_version = '1.6.5'
|
32
|
+
super
|
33
|
+
end
|
34
|
+
|
35
|
+
def bundle_command
|
36
|
+
( ruby_command == 'jruby' ) ? 'jbundle' : 'bundle'
|
37
|
+
end
|
38
|
+
|
39
|
+
def install
|
40
|
+
opts = { version: bundler_version }
|
41
|
+
opts[ :format_executable ] = true unless bundle_command == 'bundle'
|
42
|
+
gem_install( 'bundler', opts )
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2011-2014 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You may
|
6
|
+
# obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'syncwrap/components/rhel'
|
18
|
+
|
19
|
+
module SyncWrap
|
20
|
+
|
21
|
+
# Customizations for \CentOS and derivatives.
|
22
|
+
class CentOS < RHEL
|
23
|
+
|
24
|
+
alias :centos_version :rhel_version
|
25
|
+
alias :centos_version= :rhel_version=
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -17,6 +17,7 @@
|
|
17
17
|
require 'syncwrap/component'
|
18
18
|
require 'syncwrap/components/rhel'
|
19
19
|
require 'syncwrap/ruby_support'
|
20
|
+
require 'syncwrap/version_support'
|
20
21
|
|
21
22
|
module SyncWrap
|
22
23
|
|
@@ -40,6 +41,7 @@ module SyncWrap
|
|
40
41
|
# development however. Again you are currently on your own (beyond
|
41
42
|
# RubySupport) if you wish to go this route.
|
42
43
|
class CRubyVM < Component
|
44
|
+
include VersionSupport
|
43
45
|
include RubySupport
|
44
46
|
|
45
47
|
# The ruby version to install, as it appears in source packages
|
@@ -71,11 +73,6 @@ module SyncWrap
|
|
71
73
|
"#{local_root}/bin/ruby"
|
72
74
|
end
|
73
75
|
|
74
|
-
# Return ruby_version as an array of Integer values
|
75
|
-
def ruby_version_a
|
76
|
-
ruby_version.split( /[.\-p]+/ ).map( &:to_i )
|
77
|
-
end
|
78
|
-
|
79
76
|
# If the current ruby_command is not at the desired ruby_version,
|
80
77
|
# download source, configure, make and install.
|
81
78
|
def install_ruby
|
@@ -111,7 +108,7 @@ module SyncWrap
|
|
111
108
|
end
|
112
109
|
|
113
110
|
def version_pattern
|
114
|
-
if (
|
111
|
+
if version_gte?( ruby_version, [2,1] )
|
115
112
|
# Starting with 2.1.x, the p# (patch number) is no longer used
|
116
113
|
# for download, won't be in ruby_version, and shouldn't be
|
117
114
|
# used for version comparison.
|