rbbt-image 0.1.5 → 0.1.6
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/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
|