{"id":3733,"date":"2015-12-08T18:11:00","date_gmt":"2015-12-08T17:11:00","guid":{"rendered":"http:\/\/bitacora.eniac2000.com\/?p=3733"},"modified":"2015-12-08T18:11:00","modified_gmt":"2015-12-08T17:11:00","slug":"uso-de-cirros-como-servidor-ligero-de-prueba-independiente","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=3733","title":{"rendered":"Uso de CirrOS como servidor ligero de prueba independiente"},"content":{"rendered":"<p><a href=\"http:\/\/bitacora.eniac2000.com\/?p=3728\" title=\"Automatizaci\u00f3n de despliegue y gesti\u00f3n de cortafuegos con Ansible\">Dec\u00edamos ayer<\/a> que uno de los elementos del entorno de prueba de la soluci\u00f3n con la que estoy trabajando en Ansible era un servidor CirrOS. Pero&#8230; \u00bfqu\u00e9 es un servidor CirrOS?<\/p>\n<p><a href=\"https:\/\/launchpad.net\/cirros\" target=\"_blank\">CirrOS<\/a> es un servidor ligero, muy ligero, especialmente desarrollado para servir como demostrador de la capacidad de despliegue de m\u00e1quinas en entornos cloud, como Openstack (de ah\u00ed el juego de palabras, claro). Es un servidor cuya imagen ocupa tan s\u00f3lo 12 megas, se puede desplegar con 32 megas de RAM y una sola CPU. No se le pueden instalar -al menos, no f\u00e1cilmente- paquetes, y las funcionalidades que ofrece son sumamente limitadas.<\/p>\n<p>Por tanto, \u00bfqu\u00e9 raz\u00f3n habr\u00eda para querer desplegar un sevidor as\u00ed en un entorno? No muchas, en realidad, salvo que tu entorno de demo sea especialmente reducido, como es mi caso. :mgreen: En realidad, tambi\u00e9n tiene alg\u00fan problema adicional: aunque la imagen a desplegar es una imagen QCOW2 convencional, que en Openstack despliega de manera sencilla en KVM, fuera de un entorno Openstack, a\u00fan usando KVM, da un poco de guerra para desplegarlo.Por ejemplo, en Gnome, aunque puedes crear la m\u00e1quina desde el \u00abVirtual Machine Manager\u00bb, utilizando la imagen descargada, la m\u00e1quina no arranca. Es preciso exportar el fichero XML de configuraci\u00f3n de la m\u00e1quina, modificar el tipo de disco de \u00abraw\u00bb a \u00abqcow2\u00bb, eliminar la m\u00e1quina y volver a crearla importando el XML para hacerla funcionar.<\/p>\n<p>Adem\u00e1s, un despliegue convencional de la imagen proporcionada por Launchpad tiene otro problema: como espera ser llamada desde un entorno de computaci\u00f3n cloud espera recibir determinados par\u00e1metros de configuraci\u00f3n a trav\u00e9s de los servicios metadatos de \u00e9ste. Y como no los recibe, se queda esperando durante 20 segundos su recepci\u00f3n&#8230; 20 veces.<\/p>\n<p>Adem\u00e1s, no hay gran cosa que puedas hacer, salvo acceder a ella por SSH. Ni servidor web, ni de correo, ni de nada.<\/p>\n<p>Pero, pese a todo, es una peque\u00f1a maravilla que merece una oportunidad. Porque para cada uno de los problemas anteriores, existe una soluci\u00f3n:<\/p>\n<ul>\n<li><strong>El problema del arranque: <\/strong>como se ha comentado, es cuesti\u00f3n de editar el XML y cambiar el par\u00e1metro de despliegue del disco. Y una vez creada la m\u00e1quina, se puede clonar tantas veces como sea necesario, ya que a partir de este momento siempre se desplegar\u00e1 con la opci\u00f3n correcta.<\/li>\n<li><strong>Lentitud en el arranque:<\/strong> Aqu\u00ed hay dos opciones. O bien tocar los par\u00e1metros de arranque para que no espere la informaci\u00f3n del entorno cloud&#8230; o hacer uso de una <a href=\"https:\/\/github.com\/eprasad\/virt-cirros\/\" target=\"_blank\">imagen previamente preparada por el usuario de GitHub Eprasad<\/a>. Ojo, a esta imagen hay que hacerle de igual manera lo comentado en el punto anterior para poderla arrancar desde KVM.<\/li>\n<li><strong>Carencia de servicios:<\/strong> Y es aqu\u00ed donde llega la magia. Como he comentado, no hay apenas nada instalado en la m\u00e1quina, salvo SSH y poco m\u00e1s. Pero ese poco m\u00e1s es sumamente importante. Porque tenemos nada m\u00e1s y nada menos que una instalaci\u00f3n de Netcat, la navaja suiza del TCP\/IP. Y a partir de aqu\u00ed, la imaginaci\u00f3n puede empezar a volar. Por ejemplo, <a href=\"http:\/\/www.brothergrimm.com\/openstack-autoscaling-tricks-cirros-webserver\/2\/\" target=\"_blank\">podemos simular de manera sencilla un bonito servidor HTTP<\/a>:\n<p><code>MYIP=$(ifconfig eth0|grep 'inet addr'|awk -F: '{print $2}'| awk '{print $1}')<\/p>\n<p>while true; do echo -e \"HTTP\/1.0 200 OK\\r\\n\\r\\n&lt;h1&gt;Hi IBM. Welcome to $MYIP&lt;\/h1&gt;\" | sudo nc -l -p 80 ; done&<\/code><\/li>\n<\/ul>\n<p>As\u00ed que recomiendo de manera encarecida darle una oportunidad a esta peque\u00f1a maravilla. Porque lo merece.<\/p>\n<p>P.D.: Otro peque\u00f1o recordatorio. C\u00f3mo configurar de manera est\u00e1tica el direccionamiento de red en CirrOS, y definir rutas est\u00e1ticas:<\/p>\n<p><code>CirrOS configure network:<\/p>\n<p>COMPUTE: \/etc\/network\/interfaces<\/p>\n<p>auto lo<br \/>\niface lo inet loopback<\/p>\n<p>auto mybr0<br \/>\niface mybr0 inet static<br \/>\n    address 10.1.0.1<br \/>\n    netmask 255.255.0.0<br \/>\n    network 10.1.0.0<br \/>\n    gateway 10.1.0.2<br \/>\n    bridge_ports eth5<br \/>\n    bridge_stp off<br \/>\n    bridge_maxwait 0<br \/>\n    bridge_fd 0<\/p>\n<p>up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.1.0.2 dev eth5<br \/>\nup route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.1.0.2 dev eth5<br \/>\nup route add -net 0.0.0.0 gw 10.1.0.2 eth5<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dec\u00edamos ayer que uno de los elementos del entorno de<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[421,910,1165,1204,1575],"series":[],"class_list":["post-3733","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-cirros","tag-kvm","tag-netcat","tag-openstack","tag-ssh"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/3733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3733"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/3733\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3733"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=3733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}