rbbt-image 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/build_rbbt_provision_sh.rb +115 -38
- data/bin/run_rbbt_docker.rb +0 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41d2f37656e25b28b506e4b6a8db2fbe8c6dd301
|
4
|
+
data.tar.gz: 36248d4174a061aaf82dbd2262b813b732fa33ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f52aa2dae8f61df1bef3c959303d741298cc8d7a1d58783b94f05864ae86c71ea4ac9bdfb8316411c6c84a510efa73cff89214fcab8b26c7494561dfb16c278
|
7
|
+
data.tar.gz: 2ca6aee64650ef5e0fdaec9d0daa99234f0d1ad10617321f154bfcfc0cbb255399638f3109c5df1a6cf3522547f46fbcc1ba255807d7b86bc7f8d407e664699f
|
@@ -2,12 +2,15 @@
|
|
2
2
|
# -*- mode: ruby -*-
|
3
3
|
# vi: set ft=ruby :
|
4
4
|
|
5
|
+
|
5
6
|
require 'rbbt-util'
|
6
7
|
require 'rbbt/util/simpleopt'
|
7
8
|
require 'rbbt/util/cmd'
|
8
9
|
|
9
10
|
$0 = "rbbt #{$previous_commands*""} #{ File.basename(__FILE__) }" if $previous_commands
|
10
11
|
|
12
|
+
orig_argv = ARGV.dup
|
13
|
+
|
11
14
|
options = SOPT.setup <<EOF
|
12
15
|
|
13
16
|
Build a provision script
|
@@ -28,10 +31,13 @@ $ #{$0} [options]
|
|
28
31
|
-su--skip_user_setup Skip user setup
|
29
32
|
-sb--skip_bootstrap Skip user bootstrap
|
30
33
|
-c--concurrent Prepare system for high-concurrency
|
34
|
+
-op--optimize Optimize files under ~/.rbbt
|
31
35
|
-dt--docker* Build docker image using the provided name
|
32
36
|
-df--docker_file* Use a Dockerfile different than the default
|
33
37
|
-dd--docker_dependency* Use a different image in the Dockerfile FROM
|
34
38
|
-v--volumnes* List of volumes to set-up
|
39
|
+
--nocolor Prevent rbbt from using colors and control sequences in the logs while provisioning
|
40
|
+
--nobar Prevent rbbt from using progress bars while provisioning
|
35
41
|
EOF
|
36
42
|
if options[:help]
|
37
43
|
if defined? rbbt_usage
|
@@ -43,6 +49,7 @@ if options[:help]
|
|
43
49
|
end
|
44
50
|
|
45
51
|
root_dir = File.dirname(File.dirname(File.expand_path(__FILE__)))
|
52
|
+
script_dir = File.join(root_dir, "share/provision_scripts/")
|
46
53
|
|
47
54
|
USER = options[:user] || 'rbbt'
|
48
55
|
SKIP_BASE_SYSTEM = options[:skip_base_system]
|
@@ -50,6 +57,7 @@ SKIP_RUBY = options[:skip_ruby]
|
|
50
57
|
SKIP_BOOT = options[:skip_bootstrap]
|
51
58
|
SKIP_USER = options[:skip_user_setup]
|
52
59
|
SKIP_GEM = options[:skip_gem]
|
60
|
+
OPTIMIZE = options[:optimize]
|
53
61
|
|
54
62
|
VARIABLES={
|
55
63
|
:RBBT_LOG => 0,
|
@@ -64,28 +72,55 @@ VARIABLES[:RBBT_SERVER] = options[:server] if options[:server]
|
|
64
72
|
VARIABLES[:RBBT_FILE_SERVER] = options[:file_server] if options[:file_server]
|
65
73
|
VARIABLES[:RBBT_WORKFLOW_SERVER] = options[:workflow_server] if options[:workflow_server]
|
66
74
|
VARIABLES[:REMOTE_WORKFLOWS] = options[:remote_workflows].split(/[\s,]+/)*" " if options[:remote_workflows]
|
75
|
+
VARIABLES[:RBBT_NOCOLOR] = "true" if options[:nocolor]
|
76
|
+
VARIABLES[:RBBT_NO_PROGRESS] = "true" if options[:nobar]
|
67
77
|
|
68
78
|
|
69
|
-
provision_script
|
70
|
-
|
71
|
-
|
79
|
+
provision_script =<<-EOF
|
80
|
+
#!/bin/bash -x
|
81
|
+
|
82
|
+
echo "RUNNING PROVISION"
|
72
83
|
echo
|
84
|
+
echo "CMD: #{File.basename($0) + " " + orig_argv.collect{|a| a =~ /\s/ ? "\'#{a}\'" : a }.join(" ")}"
|
73
85
|
|
86
|
+
EOF
|
74
87
|
|
75
|
-
|
88
|
+
provision_script +=<<-EOF
|
76
89
|
echo "1. Provisioning base system"
|
77
|
-
#{
|
90
|
+
#{
|
91
|
+
if not SKIP_BASE_SYSTEM
|
92
|
+
File.read(script_dir + 'ubuntu_setup.sh')
|
93
|
+
else
|
94
|
+
"echo SKIPPED\necho"
|
95
|
+
end
|
96
|
+
}
|
78
97
|
|
79
|
-
# BASE SYSTEM
|
80
98
|
echo "2. Setting up ruby"
|
81
|
-
#{
|
99
|
+
#{
|
100
|
+
if not SKIP_RUBY
|
101
|
+
File.read(script_dir + 'ruby_setup.sh')
|
102
|
+
else
|
103
|
+
"echo SKIPPED\necho"
|
104
|
+
end
|
105
|
+
}
|
82
106
|
|
83
|
-
|
84
|
-
|
85
|
-
|
107
|
+
echo "3. Setting up gems"
|
108
|
+
#{
|
109
|
+
if not SKIP_GEM
|
110
|
+
File.read(script_dir + 'gem_setup.sh')
|
111
|
+
else
|
112
|
+
"echo SKIPPED\necho"
|
113
|
+
end
|
114
|
+
}
|
86
115
|
|
87
|
-
|
116
|
+
EOF
|
88
117
|
|
118
|
+
provision_script +=<<-EOF
|
119
|
+
echo "4. Configuring user"
|
120
|
+
EOF
|
121
|
+
|
122
|
+
if not SKIP_USER
|
123
|
+
provision_script +=<<-EOF
|
89
124
|
####################
|
90
125
|
# USER CONFIGURATION
|
91
126
|
|
@@ -96,43 +131,95 @@ else
|
|
96
131
|
home_dir='/home/#{USER}'
|
97
132
|
fi
|
98
133
|
|
99
|
-
user_script=$home_dir/.rbbt/bin/
|
134
|
+
user_script=$home_dir/.rbbt/bin/config_user
|
100
135
|
mkdir -p $(dirname $user_script)
|
101
136
|
chown -R #{USER} /home/#{USER}/.rbbt/
|
137
|
+
|
138
|
+
|
139
|
+
# set user configuration script
|
102
140
|
cat > $user_script <<'EUSER'
|
103
141
|
|
104
142
|
. /etc/profile
|
105
143
|
|
106
|
-
echo "
|
144
|
+
echo "4.1. Loading custom variables"
|
107
145
|
#{
|
108
146
|
VARIABLES.collect do |variable,value|
|
109
147
|
"export " << ([variable,'"' << value.to_s << '"'] * "=")
|
110
148
|
end * "\n"
|
111
149
|
}
|
112
150
|
|
113
|
-
echo "
|
114
|
-
#{
|
151
|
+
echo "4.2. Loading default variables"
|
152
|
+
#{File.read(script_dir + 'variables.sh')}
|
153
|
+
|
154
|
+
echo "4.3. Configuring rbbt"
|
155
|
+
#{File.read(script_dir + 'user_setup.sh')}
|
156
|
+
EUSER
|
157
|
+
|
158
|
+
echo "4.4. Running user configuration as '#{USER}'"
|
159
|
+
chown #{USER} $user_script;
|
160
|
+
su -l -c "bash $user_script" #{USER}
|
115
161
|
|
116
|
-
|
117
|
-
|
162
|
+
EOF
|
163
|
+
else
|
164
|
+
provision_script += "echo SKIPPED\necho\n\n"
|
165
|
+
end
|
118
166
|
|
119
|
-
|
167
|
+
provision_script +=<<-EOF
|
168
|
+
echo "5. Bootstrapping workflows as '#{USER}'"
|
169
|
+
echo
|
170
|
+
EOF
|
120
171
|
|
121
|
-
|
122
|
-
|
172
|
+
if not SKIP_BOOT
|
173
|
+
provision_script +=<<-EOF
|
123
174
|
|
175
|
+
if [[ '#{ USER }' == 'root' ]] ; then
|
176
|
+
home_dir='/root'
|
177
|
+
else
|
178
|
+
home_dir='/home/#{USER}'
|
179
|
+
fi
|
180
|
+
|
181
|
+
user_script=$home_dir/.rbbt/bin/bootstrap
|
182
|
+
|
183
|
+
cat > $user_script <<'EUSER'
|
184
|
+
|
185
|
+
. /etc/profile
|
186
|
+
|
187
|
+
echo "5.1. Loading custom variables"
|
188
|
+
#{
|
189
|
+
VARIABLES.collect do |variable,value|
|
190
|
+
"export " << ([variable,'"' << value.to_s << '"'] * "=")
|
191
|
+
end * "\n"
|
192
|
+
}
|
193
|
+
|
194
|
+
echo "5.2. Loading default variables"
|
195
|
+
#{File.read(script_dir + 'variables.sh')}
|
196
|
+
|
197
|
+
echo "5.3. Configuring rbbt"
|
198
|
+
#{File.read(script_dir + 'user_setup.sh')}
|
199
|
+
#
|
200
|
+
echo "5.4. Install and bootstrap"
|
201
|
+
#{File.read(script_dir + "bootstrap.sh")}
|
124
202
|
EUSER
|
125
|
-
|
126
|
-
echo "2. Running user configuration as '#{USER}'"
|
203
|
+
|
127
204
|
chown #{USER} $user_script;
|
128
205
|
su -l -c "bash $user_script" #{USER}
|
129
206
|
|
130
|
-
|
131
|
-
|
132
|
-
|
207
|
+
EOF
|
208
|
+
else
|
209
|
+
provision_script += "echo SKIPPED\necho\n\n"
|
210
|
+
end
|
211
|
+
|
212
|
+
provision_script +=<<-EOF
|
213
|
+
# CODA
|
214
|
+
# ====
|
133
215
|
|
134
|
-
|
216
|
+
apt-get clean
|
217
|
+
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
135
218
|
|
219
|
+
#{ "su -l -c 'rbbt system optimize /home/#{USER}/.rbbt ' #{USER}" if OPTIMIZE}
|
220
|
+
|
221
|
+
echo
|
222
|
+
echo "Installation done."
|
136
223
|
EOF
|
137
224
|
|
138
225
|
docker_dependency = options[:docker_dependency]
|
@@ -141,6 +228,7 @@ if options[:docker]
|
|
141
228
|
dockerfile = options[:dockerfile] || File.join(root_dir, 'Dockerfile')
|
142
229
|
dockerfile_text = Open.read(dockerfile)
|
143
230
|
dockerfile_text.sub!(/^FROM.*/,'FROM ' + docker_dependency) if docker_dependency
|
231
|
+
dockerfile_text.sub!(/^USER rbbt/,'USER ' + USER) if USER != 'rbbt'
|
144
232
|
if options[:volumnes]
|
145
233
|
volumnes = options[:volumnes].split(/\s*[,|]\s*/).collect{|d| "VOLUME " << d} * "\n"
|
146
234
|
dockerfile_text.sub!(/^RUN/, volumnes + "\nRUN")
|
@@ -151,19 +239,8 @@ if options[:docker]
|
|
151
239
|
Open.write(dir["Dockerfile"].find, dockerfile_text)
|
152
240
|
Open.write(dir['provision.sh'], provision_script)
|
153
241
|
|
154
|
-
puts
|
155
|
-
puts "provision.sh"
|
156
|
-
puts "=========="
|
157
|
-
puts provision_script
|
158
|
-
|
159
|
-
puts
|
160
|
-
puts "Dockerfile"
|
161
|
-
puts "=========="
|
162
|
-
puts dockerfile_text
|
163
|
-
|
164
|
-
puts
|
165
242
|
puts "RUN"
|
166
|
-
puts "
|
243
|
+
puts "==="
|
167
244
|
puts "docker build -t #{options[:docker]} '#{dir}'"
|
168
245
|
io = CMD.cmd("docker build -t #{options[:docker]} '#{dir}'", :pipe => true, :log => true)
|
169
246
|
while line = io.gets
|
data/bin/run_rbbt_docker.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbbt-image
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbbt-util
|