Openshift

Version 22 (Guillermo Gómez, 03/03/2012 03:57 am)

1 1 Guillermo Gómez
h1. Openshift
2 1 Guillermo Gómez
3 1 Guillermo Gómez
{{toc}}
4 1 Guillermo Gómez
5 1 Guillermo Gómez
h2. Instalación herramientas cliente
6 1 Guillermo Gómez
7 3 Guillermo Gómez
*Fedora*
8 1 Guillermo Gómez
<pre>
9 17 Guillermo Gómez
$ su -c "yum install rubygem-rhc"
10 2 Guillermo Gómez
</pre>
11 2 Guillermo Gómez
12 2 Guillermo Gómez
*YUM*
13 2 Guillermo Gómez
<pre>
14 1 Guillermo Gómez
$ su -
15 1 Guillermo Gómez
<contraseña>
16 1 Guillermo Gómez
# cd /etc/yum.repos.d/
17 1 Guillermo Gómez
# wget https://openshift.redhat.com/app/repo/openshift.repo
18 1 Guillermo Gómez
# yum install rhc
19 2 Guillermo Gómez
</pre>
20 2 Guillermo Gómez
21 2 Guillermo Gómez
*rubygems*
22 2 Guillermo Gómez
<pre>
23 2 Guillermo Gómez
$ su -c "gem install rhc"
24 1 Guillermo Gómez
</pre>
25 1 Guillermo Gómez
26 20 Guillermo Gómez
{{include(rhc-create-domain)}}
27 1 Guillermo Gómez
28 21 Guillermo Gómez
{{include(rhc-create-app)}}
29 1 Guillermo Gómez
30 1 Guillermo Gómez
h2. Agregando un gem con bundle
31 1 Guillermo Gómez
32 1 Guillermo Gómez
Incompleto:
33 1 Guillermo Gómez
34 1 Guillermo Gómez
<pre>
35 1 Guillermo Gómez
$ vim Gemfile
36 1 Guillermo Gómez
...
37 1 Guillermo Gómez
gem 'cancan'    # gem agregado al Gemfile
38 1 Guillermo Gómez
:wq
39 1 Guillermo Gómez
$ bundle install --no-deployment
40 1 Guillermo Gómez
...
41 1 Guillermo Gómez
Enter your password to install the bundled RubyGems to your system: xxxxx
42 1 Guillermo Gómez
...
43 1 Guillermo Gómez
Using bundler (1.0.12) 
44 1 Guillermo Gómez
Installing cancan (1.6.5) 
45 1 Guillermo Gómez
Using thor (0.14.6) 
46 1 Guillermo Gómez
...
47 1 Guillermo Gómez
</pre>
48 1 Guillermo Gómez
49 1 Guillermo Gómez
<pre>
50 1 Guillermo Gómez
$ bundle install --deployment
51 1 Guillermo Gómez
Fetching source index for http://rubygems.org/
52 1 Guillermo Gómez
Fetching source index for http://gems.github.com/
53 1 Guillermo Gómez
Using rake (0.9.2) 
54 1 Guillermo Gómez
Using abstract (1.0.0) 
55 1 Guillermo Gómez
...
56 1 Guillermo Gómez
Using activerecord (3.0.8) 
57 1 Guillermo Gómez
Using activeresource (3.0.8) 
58 1 Guillermo Gómez
Installing cancan (1.6.5) 
59 1 Guillermo Gómez
Using bundler (1.0.12) 
60 1 Guillermo Gómez
...
61 1 Guillermo Gómez
Your bundle is complete! It was installed into ./vendor/bundle
62 1 Guillermo Gómez
$ git add vendor
63 1 Guillermo Gómez
$ git commit 
64 1 Guillermo Gómez
$ git push
65 1 Guillermo Gómez
</pre>
66 1 Guillermo Gómez
67 12 Guillermo Gómez
h2. Rails rake:db:migrate
68 11 Guillermo Gómez
69 11 Guillermo Gómez
En la medida que vamos desarrollando nuestra aplicación el esquema de la base de datos va cambiando, entonces, ¿cómo ejecutamos rake db:migrate? La técnica es usar *config/environments/production.rb* de la siguiente manera:
70 11 Guillermo Gómez
71 11 Guillermo Gómez
<pre><code class="ruby">
72 11 Guillermo Gómez
  config.after_initialize do
73 11 Guillermo Gómez
    ActiveRecord::Migrator.migrate(RAILS_ROOT + "/db/migrate" )
74 11 Guillermo Gómez
  end
75 11 Guillermo Gómez
</code></pre>
76 1 Guillermo Gómez
77 12 Guillermo Gómez
Queda pendiente documentar otras técnicas para por ejemplo rehacer la base de datos desde cero, o eliminar la tabla de sesiones entre otras necesidades comunes.
78 1 Guillermo Gómez
79 1 Guillermo Gómez
h2. Integración git/redmine/openshift
80 1 Guillermo Gómez
81 1 Guillermo Gómez
Al instalar y configurar openshift, se genera una configuración ssh , una llave específica de seguridad, y un archivo de hosts conocidos. Para poder acceder desde otra máquina, en este caso el servidor Redmine, estoy copiando los archivos correspondientes de configuración.
82 1 Guillermo Gómez
83 1 Guillermo Gómez
<pre>
84 1 Guillermo Gómez
$ cd ~/.ssh
85 1 Guillermo Gómez
$ cat config 
86 1 Guillermo Gómez
87 1 Guillermo Gómez
# Added by rhc-create-app on mié jun 15 17:22:53 VET 2011
88 1 Guillermo Gómez
89 1 Guillermo Gómez
Host *.rhcloud.com
90 1 Guillermo Gómez
    IdentityFile ~/.ssh/libra_id_rsa
91 1 Guillermo Gómez
    VerifyHostKeyDNS yes
92 1 Guillermo Gómez
    StrictHostKeyChecking no
93 1 Guillermo Gómez
    UserKnownHostsFile ~/.ssh/libra_known_hosts
94 1 Guillermo Gómez
$ scp config gomix.fedora-ve.org:~/.ssh/
95 1 Guillermo Gómez
...
96 1 Guillermo Gómez
$ scp libra_id_rsa gomix.fedora-ve.org:~/.ssh/
97 1 Guillermo Gómez
...
98 1 Guillermo Gómez
$ scp libra_known_hosts  gomix.fedora-ve.org:~/.ssh/
99 1 Guillermo Gómez
...
100 1 Guillermo Gómez
</pre>
101 1 Guillermo Gómez
102 1 Guillermo Gómez
Ahora en mi servidor Redmine:
103 1 Guillermo Gómez
104 1 Guillermo Gómez
<pre>
105 1 Guillermo Gómez
$ cd cierto/directorio/accesible
106 1 Guillermo Gómez
$ git clone --bare ssh://0b027ce8ffde4b7eb98e5bd63908ed21@fudcon-gomix.rhcloud.com/~/git/fudcon.git/
107 1 Guillermo Gómez
Cloning into bare repository fudcon.git...
108 1 Guillermo Gómez
remote: Counting objects: 3470, done.
109 1 Guillermo Gómez
remote: Compressing objects: 100% (2654/2654), done.
110 1 Guillermo Gómez
remote: Total 3470 (delta 705), reused 3220 (delta 635)
111 1 Guillermo Gómez
Receiving objects: 100% (3470/3470), 8.09 MiB | 118 KiB/s, done.
112 1 Guillermo Gómez
Resolving deltas: 100% (705/705), done.
113 1 Guillermo Gómez
</pre>
114 1 Guillermo Gómez
115 1 Guillermo Gómez
Edite la configuración git:
116 1 Guillermo Gómez
117 1 Guillermo Gómez
<pre>
118 1 Guillermo Gómez
$ cat config
119 1 Guillermo Gómez
[core]
120 1 Guillermo Gómez
	repositoryformatversion = 0
121 1 Guillermo Gómez
	filemode = true
122 1 Guillermo Gómez
	bare = true
123 1 Guillermo Gómez
[remote "origin"]
124 1 Guillermo Gómez
  url = ssh://0b027ce8ffde4b7eb98e5bd63908ed21@fudcon-gomix.rhcloud.com/~/git/fudcon.git
125 1 Guillermo Gómez
  fetch = +refs/heads/*:refs/remotes/origin/*
126 1 Guillermo Gómez
</pre>
127 1 Guillermo Gómez
128 1 Guillermo Gómez
Solo debería necesitar agregar la línea *fetch*. Luego para refrescar su repositorio local cada quince minutos y a su vez Redmine lo pueda mostrar actualizado:
129 1 Guillermo Gómez
130 1 Guillermo Gómez
<pre>
131 1 Guillermo Gómez
$ crontab -l
132 1 Guillermo Gómez
*/15 * * * * cd /home/gomix/Public/fudcon.git && git fetch && git reset --soft refs/remotes/origin/master
133 1 Guillermo Gómez
</pre>
134 1 Guillermo Gómez
135 1 Guillermo Gómez
La configuración Redmine es simple, abajo un pantallazo, sólo debe seleccionar el tipo a git y pasarle la ruta al clone git (bare).
136 1 Guillermo Gómez
137 1 Guillermo Gómez
!git-openshift-redmine.png!
138 1 Guillermo Gómez
139 1 Guillermo Gómez
Abajo un pantallazo de un proyecto Redmine ejemplo conectado git con Openshift.
140 1 Guillermo Gómez
141 1 Guillermo Gómez
!redmine-git.png!
142 4 Guillermo Gómez
143 4 Guillermo Gómez
h2. Herramientas express
144 4 Guillermo Gómez
145 4 Guillermo Gómez
<pre>
146 4 Guillermo Gómez
/usr/bin/rhc-create-app
147 4 Guillermo Gómez
/usr/bin/rhc-create-domain
148 4 Guillermo Gómez
/usr/bin/rhc-ctl-app
149 4 Guillermo Gómez
/usr/bin/rhc-snapshot
150 4 Guillermo Gómez
/usr/bin/rhc-tail-files
151 4 Guillermo Gómez
/usr/bin/rhc-user-info
152 4 Guillermo Gómez
</pre>
153 6 Guillermo Gómez
154 6 Guillermo Gómez
h3. rhc-ctl-app
155 6 Guillermo Gómez
156 4 Guillermo Gómez
<pre>
157 4 Guillermo Gómez
$ rhc-ctl-app app -h
158 4 Guillermo Gómez
159 4 Guillermo Gómez
Usage: /usr/bin/rhc-ctl-app
160 4 Guillermo Gómez
Control an OpenShift express app
161 4 Guillermo Gómez
162 4 Guillermo Gómez
  -a|--app   application   Application name  (alphanumeric) (required)
163 4 Guillermo Gómez
  -l|--rhlogin rhlogin     Red Hat login (RHN or OpenShift login with OpenShift Express access) (Default: guillermo.gomez@gmail.com)
164 4 Guillermo Gómez
  -p|--password password   RHLogin password  (optional, will prompt)
165 4 Guillermo Gómez
  -c|--command command     (start|stop|restart|reload|status|destroy)
166 4 Guillermo Gómez
  -L|--embedded-list       List supported embedded cartridges
167 4 Guillermo Gómez
  -e|--embed               (add-$cartridge|remove-$cartridge) eg: add-mysql-5.1
168 4 Guillermo Gómez
  -b|--bypass              Bypass warnings
169 4 Guillermo Gómez
  -d|--debug               Print Debug info
170 4 Guillermo Gómez
  -h|--help                Show Usage info
171 4 Guillermo Gómez
</pre>
172 4 Guillermo Gómez
173 4 Guillermo Gómez
*start*
174 5 Guillermo Gómez
<pre>
175 8 Guillermo Gómez
$ rhc-ctl-app -a fudcon -c start
176 8 Guillermo Gómez
Password: 
177 8 Guillermo Gómez
Contacting https://openshift.redhat.com
178 8 Guillermo Gómez
Contacting https://openshift.redhat.com
179 8 Guillermo Gómez
API version:    1.1.1
180 8 Guillermo Gómez
Broker version: 1.1.1
181 8 Guillermo Gómez
182 8 Guillermo Gómez
RESULT:
183 8 Guillermo Gómez
Success
184 8 Guillermo Gómez
</pre>
185 8 Guillermo Gómez
186 8 Guillermo Gómez
*stop*
187 8 Guillermo Gómez
<pre>
188 8 Guillermo Gómez
$ rhc-ctl-app -a fudcon -c stop
189 8 Guillermo Gómez
Password: 
190 8 Guillermo Gómez
Contacting https://openshift.redhat.com
191 8 Guillermo Gómez
Contacting https://openshift.redhat.com
192 8 Guillermo Gómez
API version:    1.1.1
193 8 Guillermo Gómez
Broker version: 1.1.1
194 8 Guillermo Gómez
195 8 Guillermo Gómez
RESULT:
196 8 Guillermo Gómez
Success
197 8 Guillermo Gómez
</pre>
198 8 Guillermo Gómez
199 8 Guillermo Gómez
*restart*
200 8 Guillermo Gómez
<pre>
201 7 Guillermo Gómez
$ rhc-ctl-app -a fudcon -c restart 
202 7 Guillermo Gómez
Password: 
203 7 Guillermo Gómez
Contacting https://openshift.redhat.com
204 7 Guillermo Gómez
Contacting https://openshift.redhat.com
205 7 Guillermo Gómez
API version:    1.1.1
206 7 Guillermo Gómez
Broker version: 1.1.1
207 7 Guillermo Gómez
208 7 Guillermo Gómez
RESULT:
209 7 Guillermo Gómez
Success
210 7 Guillermo Gómez
</pre>
211 7 Guillermo Gómez
212 8 Guillermo Gómez
*status*
213 8 Guillermo Gómez
<pre>
214 8 Guillermo Gómez
$ rhc-ctl-app -a fudcon -c status
215 8 Guillermo Gómez
Password: 
216 8 Guillermo Gómez
Contacting https://openshift.redhat.com
217 8 Guillermo Gómez
Contacting https://openshift.redhat.com
218 8 Guillermo Gómez
API version:    1.1.1
219 8 Guillermo Gómez
Broker version: 1.1.1
220 8 Guillermo Gómez
221 8 Guillermo Gómez
RESULT:
222 8 Guillermo Gómez
Total Accesses: 0
223 8 Guillermo Gómez
Total kBytes: 0
224 8 Guillermo Gómez
Uptime: 44
225 8 Guillermo Gómez
ReqPerSec: 0
226 8 Guillermo Gómez
BytesPerSec: 0
227 8 Guillermo Gómez
BusyWorkers: 1
228 8 Guillermo Gómez
IdleWorkers: 0
229 8 Guillermo Gómez
Scoreboard: W....
230 8 Guillermo Gómez
</pre>
231 7 Guillermo Gómez
232 21 Guillermo Gómez
{{include(rhc-domain-info)}}
233 5 Guillermo Gómez
234 9 Guillermo Gómez
h3. rhc-tail-files
235 9 Guillermo Gómez
236 9 Guillermo Gómez
<pre>
237 9 Guillermo Gómez
$ rhc-tail-files -a fudcon -f fudcon/logs/* -p budhUjvwn6
238 9 Guillermo Gómez
...
239 9 Guillermo Gómez
==> fudcon/logs/error_log-20110712-000000-EST <==
240 9 Guillermo Gómez
	from /var/lib/libra/0b027ce8ffde4b7eb98e5bd63908ed21/fudcon/deploy/config/application.rb:7
241 9 Guillermo Gómez
	from /var/lib/libra/0b027ce8ffde4b7eb98e5bd63908ed21/fudcon/deploy/config/environment.rb:2:in `require'
242 9 Guillermo Gómez
	from /var/lib/libra/0b027ce8ffde4b7eb98e5bd63908ed21/fudcon/deploy/config/environment.rb:2
243 9 Guillermo Gómez
	from config.ru:3:in `require'
244 9 Guillermo Gómez
	from config.ru:3
245 9 Guillermo Gómez
	from /var/lib/libra/0b027ce8ffde4b7eb98e5bd63908ed21/fudcon/deploy/vendor/bundle/ruby/1.8/gems/rack-1.2.3/lib/rack/builder.rb:46:in `instance_eval'
246 9 Guillermo Gómez
	from /var/lib/libra/0b027ce8ffde4b7eb98e5bd63908ed21/fudcon/deploy/vendor/bundle/ruby/1.8/gems/rack-1.2.3/lib/rack/builder.rb:46:in `initialize'
247 9 Guillermo Gómez
	from config.ru:1:in `new'
248 9 Guillermo Gómez
	from config.ru:1
249 9 Guillermo Gómez
/var/lib/libra/0b027ce8ffde4b7eb98e5bd63908ed21/fudcon/deploy/config/environments/production.rb:51: warning: don't put space before argument parentheses
250 9 Guillermo Gómez
...
251 9 Guillermo Gómez
</pre>
252 9 Guillermo Gómez
253 10 Guillermo Gómez
*production.log*: para que pueda tener ese log disponible con rhc-tail-files debe realizar el siguiente pequeño ajuste en config/environments/production.rb:
254 10 Guillermo Gómez
255 10 Guillermo Gómez
<pre><code class="ruby">
256 10 Guillermo Gómez
paths.log="../logs/production.log"
257 10 Guillermo Gómez
</code></pre>
258 10 Guillermo Gómez
259 10 Guillermo Gómez
<pre>
260 10 Guillermo Gómez
$ rhc-tail-files -a fudcon -f fudcon/logs/production.log -p budhUjvwn6
261 10 Guillermo Gómez
Contacting https://openshift.redhat.com
262 10 Guillermo Gómez
Attempting to tail files: fudcon/logs/production.log
263 10 Guillermo Gómez
Use ctl + c to stop
264 10 Guillermo Gómez
265 10 Guillermo Gómez
Started GET "/" for 41.208.172.156 at Thu Aug 25 02:27:26 -0400 2011
266 10 Guillermo Gómez
  Processing by WelcomeController#index as HTML
267 10 Guillermo Gómez
Redirected to https://cas.ipostel.gob.ve/login?service=http%3A%2F%2Ffudcon-gomix.rhcloud.com%2Fwelcome%2Findex
268 10 Guillermo Gómez
Completed 302 Found in 2ms
269 10 Guillermo Gómez
270 10 Guillermo Gómez
271 10 Guillermo Gómez
Started GET "/" for 61.135.249.108 at Thu Aug 25 04:40:38 -0400 2011
272 10 Guillermo Gómez
  Processing by WelcomeController#index as HTML
273 10 Guillermo Gómez
Redirected to https://cas.ipostel.gob.ve/login?service=http%3A%2F%2Ffudcon-gomix.rhcloud.com%2Fwelcome%2Findex
274 10 Guillermo Gómez
Completed 302 Found in 2ms
275 10 Guillermo Gómez
...
276 10 Guillermo Gómez
</pre>
277 14 Guillermo Gómez
278 22 Guillermo Gómez
h2. Páginas hijas
279 22 Guillermo Gómez
280 22 Guillermo Gómez
* [[rhc-create-app]]
281 22 Guillermo Gómez
* [[rhc-create-domain]]
282 22 Guillermo Gómez
* [[rhc-domain-info]]
283 22 Guillermo Gómez
* [[rhc-user-info]]
284 22 Guillermo Gómez
285 21 Guillermo Gómez
286 19 Guillermo Gómez
287 14 Guillermo Gómez
h2. Referencias
288 14 Guillermo Gómez
289 14 Guillermo Gómez
* https://www.redhat.com/openshift/kb/kb-e1005-ruby-on-rails-express-quickstart-guide