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 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