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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45cabf65fcec576a94bbac4f3281e413fffd227c
4
- data.tar.gz: 801c437556c18f05c1bd70992983b3118d83f270
3
+ metadata.gz: 41d2f37656e25b28b506e4b6a8db2fbe8c6dd301
4
+ data.tar.gz: 36248d4174a061aaf82dbd2262b813b732fa33ec
5
5
  SHA512:
6
- metadata.gz: 7b589d0f608ff6a6cea6b371f9a7273dbe3cb4353e560f165f23842c4fef62d00901b2b9b69290d272ee64c2458ed1e268c7dd59ce3a96023d453ad714e5939d
7
- data.tar.gz: 30bab801dae6cb3238eb761b7b1ce7119830d6ca228091ea26e6df50dc4cb8e847edf233854e69bb27c6e1c9277c2a69560923b90ca1d2a29adade17f233370c
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 =<<EOF
70
- cat "$0"
71
- echo "Running provisioning"
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
- # BASE SYSTEM
88
+ provision_script +=<<-EOF
76
89
  echo "1. Provisioning base system"
77
- #{File.read(File.join(root_dir, "share/provision_scripts/ubuntu_setup.sh")) unless SKIP_BASE_SYSTEM}
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
- #{File.read(File.join(root_dir, "share/provision_scripts/ruby_setup.sh")) unless SKIP_RUBY}
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
- # BASE SYSTEM
84
- echo "2. Setting up gems"
85
- #{File.read(File.join(root_dir, "share/provision_scripts/gem_setup.sh")) unless SKIP_GEM}
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
- #{"exit" if SKIP_USER}
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/provision
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 "2.1. Custom variables"
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 "2.2. Default variables"
114
- #{ File.read(File.join(root_dir, "share/provision_scripts/variables.sh")) }
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
- echo "2.3. Configuring rbbt"
117
- #{File.read(File.join(root_dir, "share/provision_scripts/user_setup.sh"))}
162
+ EOF
163
+ else
164
+ provision_script += "echo SKIPPED\necho\n\n"
165
+ end
118
166
 
119
- #{"exit" if SKIP_BOOT}
167
+ provision_script +=<<-EOF
168
+ echo "5. Bootstrapping workflows as '#{USER}'"
169
+ echo
170
+ EOF
120
171
 
121
- echo "2.4. Bootstrap system"
122
- #{File.read(File.join(root_dir, "share/provision_scripts/bootstrap.sh"))}
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
- # DONE
131
- echo
132
- echo "Installation done."
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
@@ -84,9 +84,3 @@ cmd_str += "'"
84
84
 
85
85
  Log.info "Docker: \n" << cmd_str
86
86
  exec(cmd_str)
87
- #io = CMD.cmd(cmd_str, :pipe => true, :log => true, :stderr => 0)
88
- #
89
- #while line = io.gets
90
- # puts line
91
- #end
92
-
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.5
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-01-27 00:00:00.000000000 Z
11
+ date: 2016-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbbt-util