-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
915 lines (474 loc) · 28.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Pedro Jiménez's Blog</title>
<meta name="author" content="Pedro Jiménez Solís">
<meta name="description" content="<img align=center
src="https://a248.e.akamai.net/camo.github.com/160d8ec179f975175efe17a3225dfd557772c1b2/ …">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://pedrojimenez.github.com/">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/ender.js"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="Pedro Jiménez's Blog" type="application/atom+xml">
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">Pedro Jiménez's Blog</a></h1>
<h2>Un blog de muchas inquietudes</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:pedrojimenez.github.com" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/03/12/new-rrrors-on-fresh-openstack-installations-mysql-and-keystone/">New Errors on Fresh Openstack Installations: MySQL and KeyStone</a></h1>
<p class="meta">
<time datetime="2013-03-12T10:55:00+01:00" pubdate data-updated="true">Mar 12<span>th</span>, 2013</time>
| <a href="/blog/2013/03/12/new-rrrors-on-fresh-openstack-installations-mysql-and-keystone/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><center>
<img align=center
src="https://a248.e.akamai.net/camo.github.com/160d8ec179f975175efe17a3225dfd557772c1b2/687474703a2f2f7465726d2e69652f646174612f6d656469756d5f6b736c2e706e67">
</center>
<h2>Problemática con Keystone</h2>
<p>Al desplegar un nodo de Controller via Chef nos hemos encontrado con varios problemas. Para empezar, voy a datar la fecha del error. Ayer 11 de Marzo finalicé de actualizar todos los nodos a desplegar, renicié incluso las máquinas y me dispuse a seguir haciendo pruebas de despliegue con los cookbooks actualizados. Pero … empezaron los errores. Por una parte, al hacer pruebas con Quantum necesitaba ver la lista de los tenants y al hacer un listado con “keystone” me dio un error de versionado.</p>
<pre>
$ keystone
Traceback (most recent call last):
File "/usr/bin/keystone", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2807, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 594, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: requests>=0.8.8,<1.0
</pre>
</div>
<footer>
<a rel="full-article" href="/blog/2013/03/12/new-rrrors-on-fresh-openstack-installations-mysql-and-keystone/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/02/07/ono-netgear-router-losing-ssh-conections/">ONO Netgear Router: Losing SSH Conections</a></h1>
<p class="meta">
<time datetime="2013-02-07T10:53:00+01:00" pubdate data-updated="true">Feb 7<span>th</span>, 2013</time>
| <a href="/blog/2013/02/07/ono-netgear-router-losing-ssh-conections/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><center>
<img align=center
src="http://topjailbreakapps.info/wp-content/uploads/2010/02/SSH1.jpg">
</center>
<h2>Problemática</h2>
<p>Nos hemos mudado a una nueva oficina y tenemos la suerte de haber contratado
ONO 100 MB. La verdad que como línea de comunicaciones es excepcional. Pero
mientras trabajamos nos hemos encontrado con un problemilla de comunicaciones a
la hora de mantener las sesiones SSH activas.</p>
<p>Como casi todas las empresas TIC, nosotros tenenos servidores externos para
varios usos. El caso es que el equipo de Sistemas suele tener varias “consolas”
abiertas con múltiples conexiones <strong>SSH</strong>.</p>
<p>Antes de tener contratado <strong>ONO</strong> la verdad que no se nos cortaba la conexión
de dichas sesiones, pero ahora mismo no podemos dejarlas sin actividad más de
unos pocos minutos. Para poder mantener las sesiones abiertas deberemos
realizar algunos cambios o bien en la parte del Server o bien en la parte de
Cliente.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/02/07/ono-netgear-router-losing-ssh-conections/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/02/06/appendix-chef-client-log-configuration-after-bootstrap/">Appendix: Chef-client Log Configuration After Bootstrap</a></h1>
<p class="meta">
<time datetime="2013-02-06T11:19:00+01:00" pubdate data-updated="true">Feb 6<span>th</span>, 2013</time>
| <a href="/blog/2013/02/06/appendix-chef-client-log-configuration-after-bootstrap/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><center>
<img align=center
src="http://docs.opscode.com/_static/opscode_chef_html_logo.jpg">
</center>
<br />
<h2>Chef: Logs después de realizar un BootStrap</h2>
<p>Ya hemos visto en post anteriores como realizar la instalación de OpenStack
bien con un servidor de [Chef Hosted] bien con un servidor [Chef Privado].
También se realizó un post sobre la instalación de un Servidor de Chef Privado
a través de una gema de Ruby
<a href="http://pedrojimenez.github.com/blog/2013/01/29/installing-a-private-chef-server-via-knife-server/">knife-server</a>.</p>
<p>Bien, a la hora de depurar errores en cada ejecución del cliente de Chef la
salida está configurada por defecto para que lo haga en <strong>STDOUT</strong>. Sin embargo
en las instalaciones por paquetería de <strong>chef-client</strong> esta configuración se
sobreescribe con el valor que se especifique en <strong>/etc/default/chef-client</strong>,
que en nuestro caso será <strong>/var/log/chef/chef-client.log</strong>.</p>
<p>Valores por paquetería de /etc/chef/clint.rb</p>
<pre>
log_level :info
log_location STDOUT
</pre>
<p>Valores por paquetería de /etc/default/chef-client</p>
<pre>
LOGFILE=/var/log/chef/client.log
CONFIG=/etc/chef/client.rb
INTERVAL=1800
SPLAY=20
</pre>
</div>
<footer>
<a rel="full-article" href="/blog/2013/02/06/appendix-chef-client-log-configuration-after-bootstrap/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/01/31/openstack-installation-librarian-and-spiceweasel-part-ii-private-chef-server/">Openstack Installation - Librarian and Spiceweasel Part II - Private Chef Server</a></h1>
<p class="meta">
<time datetime="2013-01-31T11:02:00+01:00" pubdate data-updated="true">Jan 31<span>st</span>, 2013</time>
| <a href="/blog/2013/01/31/openstack-installation-librarian-and-spiceweasel-part-ii-private-chef-server/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><center>
<img align=center
src="http://docs.opscode.com/_static/opscode_chef_html_logo.jpg">
</center>
<br />
<h2>Eligiendo Servidor</h2>
<p>Como ya vimos en el post previo a este, hay una manera muy sencilla de instalar
un servidor de Chef mediante una Gema de Ruby, knife-server.</p>
<p>Ver: <a href="http://pedrojimenez.github.com/blog/2013/01/29/installing-a-private-chef-server-via-knife-server">http://pedrojimenez.github.com/blog/2013/01/29/installing-a-private-chef-server-via-knife-server</a></p>
<p>Nuestro objetivo real ahora mismo es realizar el despliegue de <strong>OpenStack</strong>, por
tanto cada cual deberá decidir cómo quiere instalarse el servidor propio de
Chef. Si es necesaria más información, se puede revisar la documentación
oficial de la gente de OpsCode.</p>
<p>Instalación: <a href="http://private-chef-docs.opscode.com/installation.html">http://private-chef-docs.opscode.com/installation.html</a></p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/01/31/openstack-installation-librarian-and-spiceweasel-part-ii-private-chef-server/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/01/29/installing-a-private-chef-server-via-knife-server/">Installing a Private Chef Server via Knife-server</a></h1>
<p class="meta">
<time datetime="2013-01-29T09:45:00+01:00" pubdate data-updated="true">Jan 29<span>th</span>, 2013</time>
| <a href="/blog/2013/01/29/installing-a-private-chef-server-via-knife-server/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><center>
<img align=center
src="http://docs.opscode.com/_static/opscode_chef_html_logo.jpg">
</center>
<p>Existen varias maneras de instalar un servidor de Chef privado, bien sea en una
máquina virtual o física. Vamos a abordar una de ellas, la instalación del
servidor de Chef via la gema de “knife-server”.</p>
<p>Más información sobre instalaciones manuales de CHEF:
<a href="http://wiki.opscode.com/display/chef/Installing+Chef+Server+Manually">http://wiki.opscode.com/display/chef/Installing+Chef+Server+Manually</a></p>
<p>Será necesario tener un entorno RVM operativo y funcional. Para más información
se puede ampliar desde aquí: <a href="https://rvm.io/rvm/install/">https://rvm.io/rvm/install/</a>. La verdad que no es
el objetivo de este post explicar la instalación de dicho entorno.</p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/01/29/installing-a-private-chef-server-via-knife-server/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/01/28/openstack-installation-librarian-and-spiceweasel-part-i-hosted-chef/">Openstack Installation - Librarian and Spiceweasel Part I - Hosted Chef</a></h1>
<p class="meta">
<time datetime="2013-01-28T12:58:00+01:00" pubdate data-updated="true">Jan 28<span>th</span>, 2013</time>
| <a href="/blog/2013/01/28/openstack-installation-librarian-and-spiceweasel-part-i-hosted-chef/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><center>
<img align=center
src="http://docs.opscode.com/_static/opscode_chef_html_logo.jpg">
</center>
<h2>¿ Quiénes son ?</h2>
<p>Hemos de detenernos un instante para hacer meción especial a las 2 maravillosas
gemas que nos harán la vida muy sencilla con OpenStack. Hablamos de “librarian”
y de “spiceweasel”. Para que la presentación sea bastante más oficial debemos
considerar que librarian será nuestro “cazador de cookbooks” y que spiceweasel
será el que los aplique contra el Servidor de Chef que elijamos, bien sea
público o privado. Además SpiceWeasel se encargará de aplicar roles/cookbooks a
los nodos directamente. Con esta pequeña “joya” se pueden hacer despliegues
verdaderamente veloces.</p>
<p><strong>Librarian</strong></p>
<p>Librarian-Chef is a bundler for infrastructure repositories using Chef. You can
use Librarian-Chef to resolve your infrastructure’s cookbook dependencies,
fetch them, and install them into your infrastructure repository.</p>
<p>Enlace: <a href="https://github.com/applicationsonline/librarian">https://github.com/applicationsonline/librarian</a></p>
<p><strong>SpiceWeasel</strong></p>
<p>Provides a CLI tool for generating knife commands to build Chef-managed
infrastructure from a simple JSON or YAML file.</p>
<p>Enlace: <a href="http://wiki.opscode.com/display/chef/Spiceweasel">http://wiki.opscode.com/display/chef/Spiceweasel</a></p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/01/28/openstack-installation-librarian-and-spiceweasel-part-i-hosted-chef/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/12/12/ubuntu-python-keystoneclient-dependency-error/">Ubuntu Python-keystoneclient Dependency Error</a></h1>
<p class="meta">
<time datetime="2012-12-12T12:59:00+01:00" pubdate data-updated="true">Dec 12<span>th</span>, 2012</time>
| <a href="/blog/2012/12/12/ubuntu-python-keystoneclient-dependency-error/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>Después de tener la infraestructura completa y funcional, nos encontramos ayer con un extraño error que no nos permitía el uso de Glance para poder hacer un “upload” de las imágenes. Nos encontramos con un error de dependencias en uno de los paquetes necesarios en la invocación de Glance.</p>
<p>Buscando algo más de información vemos que con la paquetería actual se llega a un error de versionado en el paquete <strong>python-keystoneclient</strong> y no permite que glance se ejecute.</p>
<pre>
root@controller:~# glance index
Traceback (most recent call last):
File "/usr/bin/glance", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2711, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 584, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: python-keystoneclient>=0.1.2,<0.2
root@controller:~# glance image-list
Traceback (most recent call last):
File "/usr/bin/glance", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2711, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 584, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: python-keystoneclient>=0.1.2,<0.2
</pre>
</div>
<footer>
<a rel="full-article" href="/blog/2012/12/12/ubuntu-python-keystoneclient-dependency-error/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/12/11/chef-bootstrapping-for-first-time/">Chef: Bootstrapping for First Time</a></h1>
<p class="meta">
<time datetime="2012-12-11T15:36:00+01:00" pubdate data-updated="true">Dec 11<span>th</span>, 2012</time>
| <a href="/blog/2012/12/11/chef-bootstrapping-for-first-time/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><center>
<img align=center src="http://docs.opscode.com/_static/opscode_chef_html_logo.jpg">
</center>
<p>Hemos arrancado por fin nuestro laboratorio completamente con Chef y nos tocaba probar uno de los trucos/habilidades más asombrosas de Knife, BooTstrap.</p>
<p>Gracias a este comando podremos incluir a un nodo que no estuviera dado de alta en nuestra infraestructura desde alguno de los nodos de “administración”, completando su registro e instalando el software de Chef en dicho nodo. Además crea el fichero de configuración “client.rb” y los dos ficheros de claves, el de cliente (client.pem) y el del servidor (validation.pem) en el nodo.</p>
<pre>
[ coruscant:~ ] knife bootstrap 192.168.1.242 -x operador -P onetimepassword --sudo
Bootstrapping Chef on 192.168.1.242
192.168.1.242 [Tue, 11 Dec 2012 15:14:48 +0100] INFO: *** Chef 10.14.4 ***
192.168.1.242 [Tue, 11 Dec 2012 15:14:49 +0100] INFO: Client key /etc/chef/client.pem is not present - registering
192.168.1.242 [Tue, 11 Dec 2012 15:14:49 +0100] INFO: HTTP Request Returned 404 Not Found: Cannot load node compute02
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Setting the run_list to [] from JSON
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Run List is []
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Run List expands to []
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Starting Chef Run for compute02
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Running start handlers
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Start handlers complete.
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Loading cookbooks []
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] WARN: Node compute02 has an empty run list.
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Chef Run complete in 0.632681 seconds
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Running report handlers
192.168.1.242 [Tue, 11 Dec 2012 15:14:50 +0100] INFO: Report handlers complete
</pre>
</div>
<footer>
<a rel="full-article" href="/blog/2012/12/11/chef-bootstrapping-for-first-time/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/12/05/cinder-volume-creation-error-in-folsom/">Cinder: Volume Creation Error in Folsom</a></h1>
<p class="meta">
<time datetime="2012-12-05T17:45:00+01:00" pubdate data-updated="true">Dec 5<span>th</span>, 2012</time>
| <a href="/blog/2012/12/05/cinder-volume-creation-error-in-folsom/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><center>
<img src="http://wiki.openstack.org/Icons?action=AttachFile&do=get&target=openstack-object-storage-icon.png" alt="Cinder">
<img src="http://wiki.openstack.org/Icons?action=AttachFile&do=get&target=openstack-object-storage-icon.png" alt="Cinder">
<img src="http://wiki.openstack.org/Icons?action=AttachFile&do=get&target=openstack-object-storage-icon.png" alt="Cinder">
</center>
<br /><br />
<p>Estamos inmersos en la automatización de las instalaciones de Openstack con Chef. Utilizamos actualmente una infraestructura muy sencilla con un Chef-Server local que vamos utilizando para diferentes clientes/laboratorios.</p>
<p>Una de las varias modificaciones que hemos tenido que realizar ha sido con el cookbook de Cinder. Nos hemos encontrado que después de tocar atributos en el “Rol” y el “Entorno” nos seguía dando error al crear el volumen desde consola. Más específicamente un error de iSCSI:</p>
<pre>
2012-12-05 17:01:19 4046 ERROR cinder.openstack.common.rpc.amqp [-] Exception during message handling
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp Traceback (most recent call last):
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/cinder/openstack/common/rpc/amqp.py", line 276, in _process_data
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp rval = self.proxy.dispatch(ctxt, version, method, **args)
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/cinder/openstack/common/rpc/dispatcher.py", line 145, in dispatch
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp return getattr(proxyobj, method)(ctxt, **kwargs)
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/cinder/volume/manager.py", line 163, in create_volume
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp volume_ref['id'], {'status': 'error'})
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp self.gen.next()
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/cinder/volume/manager.py", line 156, in create_volume
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp model_update = self.driver.create_export(context, volume_ref)
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/cinder/volume/driver.py", line 437, in create_export
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp volume_path)
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/cinder/volume/iscsi.py", line 145, in create_iscsi_target
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp raise exception.ISCSITargetCreateFailed(volume_id=vol_id)
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp ISCSITargetCreateFailed: Failed to create iscsi target for volume volume-4e680c7b-b8f4-43b8-a766-1996a2537474.
2012-12-05 17:01:19 4046 TRACE cinder.openstack.common.rpc.amqp
</pre>
</div>
<footer>
<a rel="full-article" href="/blog/2012/12/05/cinder-volume-creation-error-in-folsom/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/11/16/database-access-error-in-folsom/">Database Access Error in Folsom</a></h1>
<p class="meta">
<time datetime="2012-11-16T11:32:00+01:00" pubdate data-updated="true">Nov 16<span>th</span>, 2012</time>
| <a href="/blog/2012/11/16/database-access-error-in-folsom/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>Después de darle muchas vueltas al asunto, el comodín que se utilizaba en Mysql 5.1 (versión usada Diablo and Essex) el conocido “%” ha comenzado a fallar. Nos encontramos con errores de acceso a las Bases de Datos que eran nuevos para mi hasta el momento. Revisando las bitácoras de instalaciones previas hemos visto que los permisos de acceso a las diferentes DataBases de Mysql han cambiado y se utiliza como única línea de permisos la siguiente:</p>
<pre>
mysql_database_user[keystone]: granting access with statement [GRANT all ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'onetimepassword']
</pre>
<p>Pero solamente con esta sentencia constatamos que el acceso desde otros nodos (multihost) nos daba error. Para solucionar estos problemas se ha probado a añadir sentencias extras de “GRANT” hasta que permitió dichas conexiones. Haciendo un resumen de todas ellas se ha modificado el cookbook de osops-utils para que añada una nueva sentencia de GRANT contra la dirección en la que se bindea el servicio de Mysql. De esta manera se podrá configurar el servicio de Base de Datos en HA y tener los accesos contra la “bind_address”.</p>
<pre>
Archivo "osops-utils/libraries/database.rb"
mysql_database_user username do
connection connection_info
password pw
database_name db_name
host "#{mysql_info["bind_address"]}"
privileges [:all]
action :grant
end
</pre>
<p>Se ha hecho un <em>Pull Request</em> a la gente de <em>Rcbops</em> con esta modificación.<a href="https://github.com/rcbops-cookbooks/osops-utils/pull/46#issuecomment-10194833">Enlace</a>.</p>
<p>Ahora mismo lo estoy usando en nuestro Chef Server en el despligue de Folsom y funciona “like a charm”. Nos genera dos sentencias de permisos para cada servicio (keystone/glance/nova/horizon).</p>
<pre>
INFO: Processing mysql_database_user[keystone] action grant (keystone::server line 24)
INFO: mysql_database_user[keystone]: granting access with statement [GRANT all ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'onetimepassword']
INFO: Processing mysql_database_user[keystone] action grant (keystone::server line 32)
INFO: mysql_database_user[keystone]: granting access with statement [GRANT all ON keystone.* TO 'keystone'@'172.16.172.4' IDENTIFIED BY 'onetimepassword']
</pre>
</div>
</article>
<div class="pagination">
<a class="prev" href="/blog/page/2/">← Older</a>
<a href="/blog/archives">Blog Archives</a>
</div>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/blog/2013/03/12/new-rrrors-on-fresh-openstack-installations-mysql-and-keystone/">New Errors on Fresh Openstack Installations: MySQL and KeyStone</a>
</li>
<li class="post">
<a href="/blog/2013/02/07/ono-netgear-router-losing-ssh-conections/">ONO Netgear Router: Losing SSH conections</a>
</li>
<li class="post">
<a href="/blog/2013/02/06/appendix-chef-client-log-configuration-after-bootstrap/">Appendix: Chef-client log configuration after Bootstrap</a>
</li>
<li class="post">
<a href="/blog/2013/01/31/openstack-installation-librarian-and-spiceweasel-part-ii-private-chef-server/">Openstack Installation - librarian and spiceweasel Part II - Private Chef Server</a>
</li>
<li class="post">
<a href="/blog/2013/01/29/installing-a-private-chef-server-via-knife-server/">Installing a Private Chef Server via knife-server</a>
</li>
</ul>
</section>
<section>
<h1>GitHub Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating…</li>
</ul>
<a href="https://github.com/pedrojimenez">@pedrojimenez</a> on GitHub
<script type="text/javascript">
$.domReady(function(){
if (!window.jXHR){
var jxhr = document.createElement('script');
jxhr.type = 'text/javascript';
jxhr.src = '/javascripts/libs/jXHR.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jxhr, s);
}
github.showRepos({
user: 'pedrojimenez',
count: 0,
skip_forks: true,
target: '#gh_repos'
});
});
</script>
<script src="/javascripts/github.js" type="text/javascript"> </script>
</section>
<section>
<h1>Latest Tweets</h1>
<ul id="tweets">
<li class="loading">Status updating…</li>
</ul>
<script type="text/javascript">
$.domReady(function(){
getTwitterFeed("pjimenezsolis", 4, false);
});
</script>
<script src="/javascripts/twitter.js" type="text/javascript"> </script>
<a href="http://twitter.com/pjimenezsolis" class="twitter-follow-button" data-show-count="false">Follow @pjimenezsolis</a>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright © 2013 - Pedro Jiménez Solís -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'myblog-pedrojimenez';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>