Openshift

Version 28 (Guillermo Gómez, 03/03/2012 04:14 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 25 Guillermo Gómez
/usr/bin/rhc-port-forward
153 4 Guillermo Gómez
</pre>
154 6 Guillermo Gómez
155 23 Guillermo Gómez
{{include(rhc-ctl-app)}}
156 8 Guillermo Gómez
157 7 Guillermo Gómez
{{include(rhc-domain-info)}}
158 21 Guillermo Gómez
159 24 Guillermo Gómez
{{include(rhc-tail-files)}}
160 10 Guillermo Gómez
161 28 Guillermo Gómez
{{include(rhc-port-forward)}}
162 28 Guillermo Gómez
163 27 Guillermo Gómez
h1. Páginas hijas
164 14 Guillermo Gómez
165 22 Guillermo Gómez
* [[rhc-create-app]]
166 22 Guillermo Gómez
* [[rhc-create-domain]]
167 22 Guillermo Gómez
* [[rhc-domain-info]]
168 22 Guillermo Gómez
* [[rhc-user-info]]
169 22 Guillermo Gómez
* [[rhc-ctl-app]]
170 24 Guillermo Gómez
* [[rhc-tail-files]]
171 25 Guillermo Gómez
* [[rhc-port-forward]]
172 22 Guillermo Gómez
173 27 Guillermo Gómez
h1. Referencias
174 14 Guillermo Gómez
175 14 Guillermo Gómez
* https://www.redhat.com/openshift/kb/kb-e1005-ruby-on-rails-express-quickstart-guide