containerize_me 0.1.1

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/.autotest ADDED
@@ -0,0 +1,23 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'autotest/restart'
4
+
5
+ # Autotest.add_hook :initialize do |at|
6
+ # at.extra_files << "../some/external/dependency.rb"
7
+ #
8
+ # at.libs << ":../some/external"
9
+ #
10
+ # at.add_exception 'vendor'
11
+ #
12
+ # at.add_mapping(/dependency.rb/) do |f, _|
13
+ # at.files_matching(/test_.*rb$/)
14
+ # end
15
+ #
16
+ # %w(TestA TestB).each do |klass|
17
+ # at.extra_class_map[klass] = "test/test_misc.rb"
18
+ # end
19
+ # end
20
+
21
+ # Autotest.add_hook :run_command do |at|
22
+ # system "rake build"
23
+ # end
data/.gemtest ADDED
File without changes
data/History.txt ADDED
@@ -0,0 +1,12 @@
1
+
2
+ === 0.1.1 / 2011-07-11
3
+ * Added ability to add users to a chroot jail which do not exists on the
4
+ system. This is good if one wants a user to be able to ssh into the jail
5
+ without any login capability outside of the jail.
6
+
7
+ === 0.1.0 / 2011-07-11
8
+
9
+ * 1 major enhancement
10
+
11
+ * Birthday!
12
+
data/Manifest.txt ADDED
@@ -0,0 +1,19 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ bin/containerize_me
7
+ lib/containerize_me.rb
8
+ lib/constants.rb
9
+ lib/file.rb
10
+ lib/cp_dep_libs.rb
11
+ test/test_containerize_me.rb
12
+ templates/ubuntu_rails_hosting_stack.yaml
13
+ templates/ubuntu_mysqld.yaml
14
+ templates/ubuntu_ruby191.yaml
15
+ templates/ubuntu_ruby18.yaml
16
+ templates/nginx.yaml
17
+ templates/ruby-enterprise-passenger.yaml
18
+ templates/ubuntu_sshd.yaml
19
+
data/README.txt ADDED
@@ -0,0 +1,41 @@
1
+ = containerize_me
2
+
3
+ http://cyberconnect.biz/opensource
4
+
5
+
6
+ == DESCRIPTION:
7
+
8
+ Containerize Me is intended to provide a cross distro linux means for easily defining charactieristics of a chroot jail in yaml format. While there are other Linux tools out there aiming at delivering similar solutions often times they differ between distros. With containerize_me it's easy to get hosting setup in chroot jail's in a matter of minutes from any Linux distro.
9
+
10
+ == FEATURES:
11
+
12
+ * :copy_items Required YAML hash pointing to an array of files to copy over to the chroot environment.
13
+ * :depends_on Optional YAML configuration key referencing one or more dependancies. Dependancies may be may be nesed as many levels deep as long as there are no ciclic conditions.
14
+ * :mkdir: Optional YAML configuration key referencing an array of hashes where the has defines keys(:item, :user, :group, :mode)
15
+
16
+
17
+ == USAGE:
18
+
19
+ containerize_me --config <chroot yaml configuration file> --jail <full path to jail eg: /hosting/some_jail>
20
+
21
+ where <chroot yaml configuration file> defines the charicteristics of
22
+ the chroot environment being created. Items, such as which files are copied
23
+ over, and dependent yaml configuration files as well. See the templates directory
24
+ for examples.
25
+
26
+
27
+
28
+ == REQUIREMENTS:
29
+
30
+ * Linux
31
+ * jailkit
32
+
33
+ == INSTALL:
34
+
35
+ * Install jailkit: http://olivier.sessink.nl/jailkit/index.html#download
36
+ * gem install containerize_me
37
+
38
+
39
+ == LICENSE:
40
+
41
+ GPLv3: http://www.gnu.org/licenses/gpl.html
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+
6
+ # Hoe.plugin :compiler
7
+ # Hoe.plugin :gem_prelude_sucks
8
+ # Hoe.plugin :inline
9
+ # Hoe.plugin :racc
10
+ # Hoe.plugin :rubyforge
11
+
12
+ Hoe.spec 'containerize_me' do
13
+ developer('Cliff Cyphers', 'cliff.cyphers@gmail.com')
14
+ extra_deps << 'platform_helpers'
15
+ end
16
+
17
+ # vim: syntax=ruby
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Authod: Cliff Cyphers
4
+ # Published as part of the cyberconnect's platform mainly used
5
+ # in hosting rails applications.
6
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
7
+
8
+
9
+
10
+ base=File.expand_path(File.dirname(__FILE__) + '/..')
11
+ require 'getoptlong'
12
+ require base + '/lib/constants'
13
+ require base + '/lib/containerize_me.rb'
14
+ require 'yaml'
15
+ require 'open3'
16
+ require 'fileutils'
17
+ require 'find'
18
+ require 'rubygems'
19
+ require 'platform_helpers'
20
+
21
+
22
+ module Init
23
+ def usage
24
+ msg=<<-EOF
25
+
26
+
27
+ Usage:
28
+ containerize_me --config <chroot yaml configuration file> --jail <full path to jail: /hosting/some_jail>
29
+
30
+ where <chroot yaml configuration file> defines the charicteristics of
31
+ the chroot environment being created. Items, such as which files are copied
32
+ over, and dependent yaml configuration files as well. See the templates directory
33
+ for examples.
34
+
35
+ EOF
36
+ raise ArgumentError, msg
37
+ end
38
+
39
+ def valid?(cfg)
40
+ unless cfg.kind_of?(Hash)
41
+ raise ArgumentError, "Configuration yaml is expected to contain a hash format but found #{cfg.class}"
42
+ end
43
+ required_keys = { :system_binaries => {:type => Array, :required => false},
44
+ :other_files => {:type => Array, :required => false},
45
+ :copy_items => {:type => Array, :required => true},
46
+ :mkdir => {:type => Array, :required => false},
47
+ :depends_on => {:type => Array, :required => false},
48
+ :users => {:type => Array, :required => false} }
49
+ cfg.each_pair{ |k, v|
50
+ if required_keys.has_key?(k)
51
+ unless v.kind_of?(required_keys[k][:type])
52
+ raise ArgumentError, "Configuration for key #{k} is type #{v.class} but expected #{required_keys[k][:type]}"
53
+ end
54
+ required_keys.delete(k)
55
+ end
56
+ }
57
+
58
+ required_keys.each_pair { |k, v|
59
+ raise ArgumentError "Expected to find configuration key #{k}" if v[:required]
60
+ }
61
+
62
+ end
63
+
64
+ def config
65
+ opts = GetoptLong.new( [ '--config', '-c', GetoptLong::REQUIRED_ARGUMENT ],
66
+ ['--jail', '-j', GetoptLong::REQUIRED_ARGUMENT ] )
67
+ cfg = {:cfg => nil, :jail => nil, :templates => nil}
68
+ begin
69
+ opts.each { |opt, arg|
70
+ case opt
71
+ when '--config'
72
+ raise StandardError, "config file not found: #{arg}" unless File.exists?(arg)
73
+ begin
74
+ cfg[:cfg] = YAML::load_file(arg)
75
+ cfg[:templates] = File.dirname(File.expand_path(arg))
76
+ rescue => e
77
+ raise StandardError, "\n\nUnable to parse yaml file. Use irb and\nrequire 'yaml'\nYAML::load_file(#{'arg'})\n\nto test out your configuration.\n\n"
78
+ end
79
+ when '--jail'
80
+ cfg[:jail] = arg
81
+ end
82
+ }
83
+ rescue => e
84
+ usage
85
+ end
86
+ Init.usage unless cfg[:cfg] && cfg[:jail] &&cfg[:templates]
87
+ Init.valid?(cfg[:cfg])
88
+ cfg
89
+ end
90
+
91
+ def run
92
+ cfg=config
93
+ Jail.module_eval { @config = Jail::Config.new(:cfg => cfg[:cfg], :jail => cfg[:jail], :templates => cfg[:templates]) }
94
+ Jail.perform
95
+ end
96
+ module_function :run, :config, :usage, :valid?
97
+ end
98
+
99
+ Init.run
data/lib/constants.rb ADDED
@@ -0,0 +1,14 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ module Constants
8
+ module Errors
9
+ MISSING_JK = "jk_init not found as a system command. Ensure that you have jailkit installed and is in your path"
10
+ JAIL_NOT_WRITABLE = "Jail directory not writable or does not exists. Ensure that the user running the application has read, write and execute permissions on the directory where the jail resides."
11
+ JK_INIT_ERROR = "Issue running jk_init: "
12
+ NO_TMPL = "Template not found. Ensure that the templates defined in your config contain valid templates"
13
+ end
14
+ end
@@ -0,0 +1,262 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ base = File.expand_path(File.dirname(__FILE__))
8
+ require base + '/file'
9
+ require base + '/cp_dep_libs'
10
+
11
+ ENV['PATH'] += "/opt/cyberconnect/bin:/opt/cyberconnect/usr/bin:/opt/cyberconnect/sbin:/opt/cyberconnect/usr/sbin"
12
+
13
+ class ContainerizeMe
14
+ VERSION = '0.1.1'
15
+ end
16
+ class JailKitNotFoundError < StandardError ; end
17
+ class JailNotWritable < StandardError ; end
18
+ class NoJailDirectory < StandardError ; end
19
+
20
+
21
+ module Jail
22
+ class Config
23
+ attr_reader :jail, :dep_order, :cfg
24
+ def initialize(params={})
25
+ @cfg = params[:cfg]
26
+ @cfg[:system_binaries] ||= []
27
+ @cfg[:other_binaries] ||= []
28
+ @cfg[:copy_items] ||= []
29
+
30
+ @jail = params[:jail]
31
+ @templates = params[:templates]
32
+ @system_binaries = @cfg[:system_binaries]
33
+ @other_files = @cfg[:other_files]
34
+ @dep_order = []
35
+ order(@cfg)
36
+ end
37
+
38
+ def order(file)
39
+ if File.exists?("#{@templates}/#{file}")
40
+ cfg = YAML::load_file("#{@templates}/#{file}")
41
+ else
42
+ cfg = file
43
+ end
44
+ @dep_order << cfg unless @dep_order.include?(cfg)
45
+ if cfg.has_key?(:depends_on)
46
+ if cfg[:depends_on].kind_of?(Array)
47
+ cfg[:depends_on].each { |f| order(f) }
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ def exec(str)
54
+ res = ''
55
+ std_in, std_out, std_err = Open3::popen3(str)
56
+ puts std_out.read
57
+ err = std_err.read
58
+ err.each_line { |line|
59
+ next if "#{line}" =~ /empty, not checked/
60
+ res += line
61
+ }
62
+ res
63
+ end
64
+ def has_jailkit?
65
+ out=`which jk_init`
66
+ out.length > 0 ? true : false
67
+ end
68
+ def create
69
+ FileUtils.mkdir_p @config.jail unless File.directory?(@config.jail)
70
+ raise JailKitNotFoundError, Constants::Errors::MISSING_JK unless has_jailkit?
71
+ raise JailNotWritable, Constants::Errors::JAIL_NOT_WRITABLE unless File.writable?(@config.jail)
72
+
73
+ err = Jail.exec("jk_init -j #{@config.jail} jk_lsh")
74
+ if err.length != 0
75
+ raise StandardError, "#{Constants::Errors::JK_INIT_ERROR} #{err}"
76
+ end
77
+ true
78
+ end
79
+
80
+ # TODO: update to use following:
81
+ # jk_cp takes too long when copying large directory structures. Use
82
+ # FileUtils.cp_r first followed by cp_dep_libs to use jk_cp to copy over
83
+ # deps for executable and shared object items
84
+ def cp(item)
85
+ #=begin
86
+ if File.directory?(item)
87
+ dir = File.dirname(item)
88
+ begin
89
+ FileUtils.mkdir_p("#{@config.jail}#{dir}") unless File.directory?("#{@config.jail}#{dir}")
90
+ FileUtils.cp_r(item, "#{@config.jail}#{dir}", {:remove_destination => true})#, :preserve => true})
91
+ rescue => e
92
+ end
93
+ Jail.cp_dep_libs(item, @config.jail)
94
+ err = ''
95
+ else
96
+ #=end
97
+ err = Jail.exec("jk_cp -o -j #{@config.jail} #{item}")
98
+ end
99
+ FileUtils.clone_perms(item, @config.jail)
100
+ if err.length != 0
101
+ raise StandardError, "#{Constants::Errors::JK_INIT_ERROR} #{err}"
102
+ end
103
+ true
104
+ end
105
+
106
+ def add_common_items
107
+ files = []
108
+ common = %w(libnss libcurl)
109
+ common.each { |lib|
110
+ Find.find('/lib').each { |i| files << i if i =~ /#{lib}/ }
111
+ }
112
+ files
113
+ end
114
+
115
+ def user_in_jail?(user)
116
+ File.read(@config.jail + '/etc/passwd').grep(/^#{user}/).first != nil ? true : false
117
+ end
118
+
119
+ def group_in_jail?(gid)
120
+ File.read(@config.jail + '/etc/group').grep(/#{gid}:$/).first != nil ? true : false
121
+ end
122
+
123
+
124
+ # In order to preserve the system's /etc/passwd jailkit's jk_addjailuser is avoided.
125
+ # We only require that the user exists in the jail for all actions needed to host
126
+ # apps. Also, all other services(sshd, mysql, beanstalkd, etc) work fine
127
+ # using chroot with the --userspec. It's assumed system user's are not
128
+ # chrooted to a jail. A separate sshd process runs in the jail on a custom port
129
+ # and when a required jail user logs into that ssh instance they are confined to the jail.
130
+ # For this separation user's are added to the jail by grabbing the user info
131
+ # from /etc/passwd and appending to @config.jail/etc/passwd.
132
+ def add_user(user)
133
+ unless Jail.user_in_jail?(user)
134
+ system_users = File.read('/etc/passwd').split(/\n/).grep(/^#{user}/)
135
+ raise StandardError unless system_users.length == 1
136
+ user_info = system_users.first.split(':')
137
+ #Jail.cp(user_info[5])
138
+
139
+ fd = File.open(@config.jail + '/etc/passwd', 'a')
140
+ fd.puts system_users.first
141
+ fd.close
142
+
143
+ unless Jail.group_in_jail?(user_info[3])
144
+ group = File.read('/etc/group').grep(/:#{user_info[3]}:/).first
145
+ fd = File.open(@config.jail + '/etc/group', 'a')
146
+ fd.puts group
147
+ fd.close
148
+ end
149
+ end
150
+ true
151
+ end
152
+
153
+ def max_uid(passwd_file)
154
+ max = 0
155
+ raise ArgumentError unless File.exists?(passwd_file)
156
+ File.readlines(passwd_file).each { |l|
157
+ pass_entry = l.split(':')
158
+ next if pass_entry[2].to_i >= 65534
159
+ max = pass_entry[2].to_i if pass_entry[2].to_i > max
160
+ }
161
+ max
162
+ end
163
+
164
+ # add a user to the jail that's not in the root system's /etc/passwd
165
+ # assumes uid == gid
166
+ def add_user_not_in_root_system(user, uid=nil)
167
+ unless Jail.user_in_jail?(user)
168
+ uid ||= max_uid("#{@config.jail}/etc/passwd")+1
169
+ fd = File.open("#{@config.jail}/etc/passwd", 'a')
170
+ fd.puts "#{user}:x:#{uid}:#{uid}::/home/#{user}:/bin/bash"
171
+ fd.close
172
+ fd = File.open("#{@config.jail}/etc/group", 'a')
173
+ fd.puts "#{user}:x:#{uid}:"
174
+ fd.close
175
+ end
176
+ end
177
+
178
+ def process(cfg)
179
+ if cfg.kind_of?(Jail::Config)
180
+ cfg = @config.cfg
181
+ end
182
+ files = []
183
+ files += cfg[:system_binaries] if cfg[:system_binaries].kind_of?(Array)
184
+ files += cfg[:other_files] if cfg[:other_files].kind_of?(Array)
185
+ files += cfg[:copy_items] if cfg[:copy_items].kind_of?(Array)
186
+ files += Jail.add_common_items
187
+ files.each { |file| Jail.cp(file) }
188
+ if cfg.has_key?(:users)
189
+ cfg[:users].each { |user| Jail.add_user(user) } if cfg[:users].kind_of?(Array)
190
+ end
191
+
192
+ if cfg.has_key?(:mkdir)
193
+ if cfg[:mkdir].kind_of?(Array)
194
+ cfg[:mkdir].each { |dir|
195
+ d = "#{@config.jail}#{dir[:item]}"
196
+ FileUtils.mkdir_p d unless File.directory?(d)
197
+ if dir[:user].length > 0 && dir[:group].length > 0
198
+ FileUtils.chown(dir[:user], dir[:group], d)
199
+ FileUtils.chmod(dir[:mode], d) if dir.has_key?(:mode)
200
+ end
201
+ }
202
+
203
+ end
204
+ end
205
+
206
+ if cfg.has_key?(:symlinks)
207
+ if cfg[:symlinks].kind_of?(Array)
208
+ cfg[:symlinks].each { |i|
209
+ begin
210
+ i[:force] ||= nil
211
+ unless i.has_key?(:source) && i.has_key?(:destination)
212
+ raise StandardError, ":source and :destination must be provided when creating a symlink"
213
+ end
214
+ unless File.exists?i[:source]
215
+ raise StandardError, ":source file/directory not found"
216
+ end
217
+ if i[:force]
218
+ FileUtils.ln_sf(i[:source], "#{@config.jail}/#{i[:destination]}")
219
+ else
220
+ FileUtils.ln_s(i[:source], "#{@config.jail}/#{i[:destination]}")
221
+ end
222
+ rescue => e
223
+ p "issue creating symlink: #{e.inspect}"
224
+ end
225
+ }
226
+ end
227
+ end
228
+
229
+ if cfg.has_key?(:chown)
230
+ if cfg[:chown].kind_of?(Array)
231
+ cfg[:chown].each { |i|
232
+ begin
233
+ FileUtils.chown_R(i[:user], i[:group], "#{@config.jail}#{i[:item]}") if File.exists?("#{@config.jail}#{i[:item]}")
234
+ rescue => e
235
+ p "issue chown: #{e.inspect}"
236
+ end
237
+ }
238
+ end
239
+ end
240
+
241
+ if cfg.has_key?(:add_non_system_users)
242
+ if cfg[:add_non_system_users].kind_of?(Array)
243
+ cfg[:add_non_system_users].each { |user|
244
+ add_user_not_in_root_system(user)
245
+ }
246
+ end
247
+ end
248
+
249
+
250
+ end
251
+
252
+ def perform
253
+ if Jail.create
254
+ @config.dep_order.reverse.each { |i| process(i) }
255
+ process(@config)
256
+ end
257
+ end
258
+
259
+ module_function :create, :has_jailkit?, :cp, :exec, :add_user, :process, :perform
260
+ module_function :user_in_jail?, :add_common_items, :group_in_jail?, :max_uid, :add_user_not_in_root_system
261
+ end
262
+
@@ -0,0 +1,21 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ require 'find'
8
+
9
+ module Jail
10
+ def self.cp_dep_libs(src, jail_dir)
11
+ if File.directory?(src) && File.directory?(jail_dir)
12
+ Find.find(src) { |entry|
13
+ next if File.directory?(entry)
14
+ stat = File.stat(entry)
15
+ if entry =~ /\.so/ || stat.executable?
16
+ `jk_cp -f -j #{jail_dir} #{entry}`
17
+ end
18
+ }
19
+ end
20
+ end
21
+ end
data/lib/file.rb ADDED
@@ -0,0 +1,24 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ require 'fileutils'
8
+ require 'find'
9
+
10
+ module FileUtils
11
+ def self.clone_perms(src, dest)
12
+ if File.directory?(src) && File.directory?(dest)
13
+ Find.find(src) { |entry|
14
+ next if entry =~ /^\/proc/
15
+ begin
16
+ stat = File.stat(entry)
17
+ FileUtils.chmod(stat.mode, "#{dest}#{entry}")
18
+ FileUtils.chown(stat.uid, stat.gid, "#{dest}#{entry}")
19
+ rescue => e
20
+ end
21
+ }
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ :copy_items:
8
+ - /opt/cyberconnect/nginx
9
+ - /bin/sh
10
+ :users:
11
+ - www-data
@@ -0,0 +1,10 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ :system_binaries:
8
+ - /usr/local/ruby-enterprise-1.8.7-2011.03/bin/ruby
9
+ :other_files:
10
+ - /usr/local/ruby-enterprise-1.8.7-2011.03
@@ -0,0 +1,47 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ :copy_items:
8
+ - /usr/sbin/mysqld
9
+ - /usr/bin/mysqlhotcopy
10
+ - /bin/sh
11
+ - /etc/mysql
12
+ - /usr/share/mysql
13
+ - /usr/share/mysql-common
14
+ - /usr/bin/perl
15
+ - /usr/share/perl
16
+ - /usr/share/perl5
17
+ - /usr/lib/perl
18
+ - /usr/lib/perl5
19
+ - /var/lib/mysql/mysql
20
+ :mkdir:
21
+ - :item: /var/run/mysqld
22
+ :user: mysql
23
+ :group: root
24
+ - :item: /usr/lib/mysql
25
+ :user: mysql
26
+ :group: root
27
+ - :item: /usr/lib/mysql/plugin
28
+ :user: mysql
29
+ :group: root
30
+ - :item: /usr/local/share
31
+ :user: root
32
+ :group: root
33
+ :symlinks:
34
+ -
35
+ :source: /usr/lib/perl
36
+ :destination: /usr/local/lib/perl
37
+ :force: true
38
+ -
39
+ :source: /usr/share/perl
40
+ :destination: /usr/local/share/perl
41
+ :force: true
42
+ :users:
43
+ - mysql
44
+ :chown:
45
+ - :item: /var/lib/mysql
46
+ :user: mysql
47
+ :group: root
@@ -0,0 +1,36 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ :copy_items:
8
+ - /usr/bin/beanstalkd
9
+ - /bin/uname
10
+ - /usr/bin/env
11
+ - /bin/sh
12
+ - /usr/bin/which
13
+ - /bin/bash
14
+ - /usr/bin/nohup
15
+ - /etc/debian_version
16
+ - /var/lib/gems/1.9.1/gems/passenger-3.0.8/
17
+ - /var/lib/gems/1.9.1/specifications/passenger-3.0.8.gemspec
18
+ :depends_on:
19
+ - ubuntu_mysqld.yaml
20
+ - ubuntu_sshd.yaml
21
+ - ubuntu_ruby191.yaml
22
+ - nginx.yaml
23
+ :mkdir:
24
+ - :item: /proc
25
+ :user: root
26
+ :group: root
27
+ :mode: 0755
28
+ - :item: /dev
29
+ :user: root
30
+ :group: root
31
+ :mode: 0755
32
+ - :item: /tmp
33
+ :user: root
34
+ :group: root
35
+ :mode: 0777
36
+
@@ -0,0 +1,17 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ :copy_items:
8
+ - /usr/bin/ruby1.8
9
+ - /usr/bin/gem1.8
10
+ - /usr/local/lib/site_ruby
11
+ - /usr/lib/ruby/1.9.1
12
+ - /usr/lib/ruby/gems/1.8/
13
+ - /usr/lib/ruby/1.8
14
+ - /var/lib/gems/1.9.1
15
+ - /var/lib/gems/1.8
16
+ - /bin/sh
17
+ - /bin/bash
@@ -0,0 +1,22 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ :copy_items:
8
+ - /usr/bin/ruby1.9.1
9
+ - /usr/bin/gem1.9.1
10
+ - /usr/local/lib/site_ruby
11
+ - /usr/lib/ruby/1.9.1
12
+ - /bin/sh
13
+ - /bin/bash
14
+ :symlinks:
15
+ -
16
+ :source: /usr/bin/ruby1.9.1
17
+ :destination: /usr/bin/ruby
18
+ :force: true
19
+ -
20
+ :source: /usr/bin/gem1.9.1
21
+ :destination: /usr/bin/gem
22
+ :force: true
@@ -0,0 +1,13 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ :copy_items:
8
+ - /usr/sbin/sshd
9
+ - /etc/ssh
10
+ - /bin/sh
11
+ - /bin/bash
12
+ :users:
13
+ - sshd
@@ -0,0 +1,13 @@
1
+ # Authod: Cliff Cyphers
2
+ # Published as part of the cyberconnect's platform mainly used
3
+ # in hosting rails applications.
4
+ # Licesnse: GPLv3: http://www.gnu.org/licenses/gpl.html
5
+
6
+
7
+ require "test/unit"
8
+ require "containerize_me"
9
+
10
+ class TestContainerizeMe < Test::Unit::TestCase
11
+ def test_sanity
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: containerize_me
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.1
6
+ platform: ruby
7
+ authors:
8
+ - Cliff Cyphers
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-08-23 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: platform_helpers
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: hoe
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: "2.12"
35
+ type: :development
36
+ version_requirements: *id002
37
+ description: Containerize Me is intended to provide a cross distro linux means for easily defining charactieristics of a chroot jail in yaml format. While there are other Linux tools out there aiming at delivering similar solutions often times they differ between distros. With containerize_me it's easy to get hosting setup in chroot jail's in a matter of minutes from any Linux distro.
38
+ email:
39
+ - cliff.cyphers@gmail.com
40
+ executables:
41
+ - containerize_me
42
+ extensions: []
43
+
44
+ extra_rdoc_files:
45
+ - History.txt
46
+ - Manifest.txt
47
+ - README.txt
48
+ files:
49
+ - .autotest
50
+ - History.txt
51
+ - Manifest.txt
52
+ - README.txt
53
+ - Rakefile
54
+ - bin/containerize_me
55
+ - lib/containerize_me.rb
56
+ - lib/constants.rb
57
+ - lib/file.rb
58
+ - lib/cp_dep_libs.rb
59
+ - test/test_containerize_me.rb
60
+ - templates/ubuntu_rails_hosting_stack.yaml
61
+ - templates/ubuntu_mysqld.yaml
62
+ - templates/ubuntu_ruby191.yaml
63
+ - templates/ubuntu_ruby18.yaml
64
+ - templates/nginx.yaml
65
+ - templates/ruby-enterprise-passenger.yaml
66
+ - templates/ubuntu_sshd.yaml
67
+ - .gemtest
68
+ homepage: http://cyberconnect.biz/opensource
69
+ licenses: []
70
+
71
+ post_install_message:
72
+ rdoc_options:
73
+ - --main
74
+ - README.txt
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: "0"
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: "0"
89
+ requirements: []
90
+
91
+ rubyforge_project: containerize_me
92
+ rubygems_version: 1.8.8
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: Containerize Me is intended to provide a cross distro linux means for easily defining charactieristics of a chroot jail in yaml format
96
+ test_files:
97
+ - test/test_containerize_me.rb