{"id":1543,"date":"2014-12-17T23:41:44","date_gmt":"2014-12-17T23:41:44","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1543"},"modified":"2014-12-17T23:41:44","modified_gmt":"2014-12-17T23:41:44","slug":"couchbase-cluster-minutes-vagrant-and-puppet","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-minutes-vagrant-and-puppet\/","title":{"rendered":"Un cl\u00faster de Couchbase en minutos con Vagrant y Puppet"},"content":{"rendered":"<p style=\"margin-bottom: 0px; font-family: ff-kievit-web, 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px;\"><em style=\"line-height: 23px; font-family: ff-meta-serif-web-pro-1, ff-meta-serif-web-pro-2, Georgia, 'Times New Roman', Times, serif;\">[This blog was syndicated from https:\/\/nitschinger.at\/]<\/em><\/p>\n<div>\u00a0<\/div>\n<div>\n<h2>Motivaci\u00f3n<\/h2>\n<p>Dado que trabajo como parte del equipo de ingenier\u00eda en Couchbase, necesito ejecutar mi c\u00f3digo contra una variedad de despliegues de servidor. Tenemos multitud de sistemas operativos y versiones de software, al igual que nuestros clientes. Con el fin de corregir errores de forma fiable y construir nuevas caracter\u00edsticas, es fundamental conseguir un cl\u00faster en funcionamiento que se asemeje a estos despliegues lo mejor posible. S\u00e9 que puedo ejecutar todas estas combinaciones en EC2, pero el coste de esto ser\u00eda muy alto y la mayor\u00eda de las veces es una exageraci\u00f3n.<\/p>\n<p><span style=\"font-family: inherit; font-size: 1em; line-height: 1.4375em;\">Lo que necesito es poner en marcha un cl\u00faster de este tipo en cuesti\u00f3n de minutos y no dedicar demasiado tiempo a configurarlo. He o\u00eddo hablar de <a href=\"https:\/\/www.vagrantup.com\/\">Vagrant<\/a> y <a href=\"https:\/\/puppetlabs.com\/\">Marioneta<\/a> en el pasado, pero nunca llegu\u00e9 a usarlos en mi propia caja (aunque siempre uso <a href=\"https:\/\/www.virtualbox.org\/\">VirtualBox<\/a> en MacOS para crear m\u00e1quinas virtuales a mano).<\/span><\/p>\n<p><span style=\"font-family: inherit; font-size: 1em; line-height: 1.4375em;\">Esta ma\u00f1ana me sent\u00e9 a echar un vistazo m\u00e1s de cerca a c\u00f3mo estas herramientas pueden ayudarme a ser m\u00e1s productivo - y para mi gran sorpresa consegu\u00ed un cluster de 4 nodos de Couchbase Server funcionando en menos de 30 minutos (buscando todos los detalles de configuraci\u00f3n). Como es tan f\u00e1cil, quiero compartirlo contigo.<\/span><\/p>\n<h2><span style=\"line-height: 1;\">Requisitos previos<\/span><\/h2>\n<p>Antes de que podamos aprovisionar nuestros nodos, necesitas asegurarte de tener Vagrant y VirtualBox instalados. Si usas MacOS como yo, simplemente descarga el archivo <em>.dmg<\/em> para ambos y listo. Ahora, crear un directorio en alg\u00fan lugar para almacenar los archivos de configuraci\u00f3n - Llam\u00e9 a la m\u00eda 'vagabundos'.<\/p>\n<p><span style=\"font-family: inherit; font-size: 1em; line-height: 1.4375em;\">En este directorio, debe crear un directorio <em>Vagrantfile<\/em>. Es como los Vagabundos <em>makefile<\/em> y lo recoger\u00e1 para aprender c\u00f3mo quieres tener tus nodos aprovisionados. Tenga en cuenta que esto no configura el software en la parte superior del sistema operativo (como la instalaci\u00f3n de Couchbase), esto es manejado por puppet en un paso separado. Aqu\u00ed est\u00e1 la configuraci\u00f3n completa:<\/span><\/p>\n<\/div>\n<div>\u00a0<\/div>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">Vagrant.configure(\"2\") do |config|<\/p>\n<p>\u00a0 # N\u00famero de nodos a aprovisionar<\/p>\n<p>\u00a0 n\u00famNodos = 4<\/p>\n<p>\u00a0 # Base de direcciones IP para red privada<\/p>\n<p>\u00a0 ipAddrPrefix = \"192.168.56.10\"<\/p>\n<p>\u00a0 # Definir el n\u00famero de RAM para cada nodo<\/p>\n<p>\u00a0 config.vm.provider \"virtualbox\" do |v|<\/p>\n<p>\u00a0 \u00a0 v.customize [\"modifyvm\", :id, \"-memory\", 1024]<\/p>\n<p>\u00a0 fin<\/p>\n<p>\u00a0 # Aprovisionar el propio servidor con puppet<\/p>\n<p>\u00a0 config.vm.provision :puppet<\/p>\n<p>\u00a0 # Descarga la caja inicial desde esta url<\/p>\n<p>\u00a0 config.vm.box_url = \"https:\/\/files.vagrantup.com\/precise64.box\"<\/p>\n<p>\u00a0 # Provision Config para cada uno de los nodos<\/p>\n<p>\u00a0 1.upto(numNodos) do |num|<\/p>\n<p>\u00a0 \u00a0 nodeName = (\"nodo\" + num.to_s).to_sym<\/p>\n<p>\u00a0 \u00a0 config.vm.define nodeName do |node|<\/p>\n<p>\u00a0 \u00a0 \u00a0 node.vm.box = \"precise64\"<\/p>\n<p>\u00a0 \u00a0 \u00a0 node.vm.network :private_network, ip: ipAddrPrefix + num.to_s<\/p>\n<p>\u00a0 \u00a0 \u00a0 node.vm.provider \"virtualbox\" do |v|<\/p>\n<p>\u00a0 \u00a0 \u00a0 v.name = \"Nodo Servidor Couchbase \" + num.to_s<\/p>\n<p>\u00a0 \u00a0 fin<\/p>\n<p>\u00a0 fin<\/p>\n<p>fin<\/p>\n<p>fin<\/div>\n<\/div>\n<p>Este archivo es s\u00f3lo c\u00f3digo ruby que configura Vagrant. Vamos a ir a trav\u00e9s de cada directiva y ver lo que hace por nosotros.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\"># N\u00famero de nodos a aprovisionar<\/p>\n<p>n\u00famNodos = 4<\/p>\n<p># Base de direcciones IP para red privada<\/p>\n<p>ipAddrPrefix = \"192.168.56.10\"<\/p><\/div>\n<\/div>\n<p>You can change these values, I just created them to fit my environment here. Depending on the amount of `numNodes` set, VMs will be created. I added a loop down below depending on this setting, so I don&#39;t have to duplicate code a lot. The ip address prefix is used to easily determine the (static) IP address for the server. The numbers will be counted upwards incrementally, so you will end up with four servers accessible through `192.168.56.101` to `192.168.56.104`.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\"># Definir el n\u00famero de RAM para cada nodo<\/p>\n<p>config.vm.provider \"virtualbox\" do |v|<\/p>\n<p>\u00a0 v.customize [\"modifyvm\", :id, \"-memory\", 1024]<\/p>\n<p>fin<\/p><\/div>\n<\/div>\n<p>Este bloque de configuraci\u00f3n es necesario para aumentar el tama\u00f1o de la memoria de la m\u00e1quina virtual. Por defecto es menos que eso (creo que alrededor de 512MB), y quiero tener 1 giga de RAM para cada uno. Por supuesto, si\u00e9ntase libre de ajustar ese valor o eliminarlo por completo.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\"># Aprovisionar el propio servidor con puppet<\/p>\n<p>config.vm.provision :puppet<\/p><\/div>\n<\/div>\n<p>Como vamos a utilizar puppet para aprovisionar el software del servidor, necesitamos decirle a Vagrant que lo utilice.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\"># Descarga la caja inicial desde esta url<\/p>\n<p>config.vm.box_url = \"https:\/\/files.vagrantup.com\/precise64.box\"<\/p><\/div>\n<\/div>\n<p>Vagrant reutiliza im\u00e1genes predefinidas para que no tengas que reinstalar todo desde cero. Aqu\u00ed usamos una caja predefinida de Ubuntu 12.04 64bit.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\"># Provision Config para cada uno de los nodos<\/p>\n<p>1.upto(numNodos) do |num|<\/p>\n<p>\u00a0 nodeName = (\"nodo\" + num.to_s).to_sym<\/p>\n<p>\u00a0 config.vm.define nodeName do |node|<\/p>\n<p>\u00a0 \u00a0 node.vm.box = \"precise64\"<\/p>\n<p>\u00a0 \u00a0 node.vm.network :private_network, ip: ipAddrPrefix + num.to_s<\/p>\n<p>\u00a0 \u00a0 node.vm.provider \"virtualbox\" do |v|<\/p>\n<p>\u00a0 \u00a0 \u00a0v.name = \"Nodo Servidor Couchbase \" + num.to_s<\/p>\n<p>\u00a0 \u00a0 fin<\/p>\n<p>\u00a0 fin<\/p>\n<p>fin<\/p><\/div>\n<\/div>\n<p>Este bloque de c\u00f3digo configura cada m\u00e1quina virtual. Dado el n\u00famero de nodos que queremos crear, para cada uno de ellos asigna una direcci\u00f3n IP y le da un nombre descriptivo dentro de Virtualbox. Si quieres a\u00f1adir configuraciones dependientes del servidor, el bloque \"nodo\" es el lugar adecuado para ello. De lo contrario elegir\u00e1 la configuraci\u00f3n de todo el cluster definida en el bloque \"config\".<\/p>\n<p>Now if we would run `vagrant up` from the command line in this directory, we&#39;d get four Ubuntu machines setup where we could SSH into, but nothing else would be installed. In order to make them do something, we want to install Couchbase Server. Puppet is a system automation software and very good at provisioning systems. Vagrant has amazing support for it, all we need to is create a `default.pp` file inside a `manifests` directory that looks like this:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">exec { \"couchbase-server-source\": <\/p>\n<p>\u00a0 comando =&gt; \"\/usr\/bin\/wget https:\/\/packages.couchbase.com\/releases\/2.0.1\/couchbase-server-enterprise_x86_64_2.0.1.deb\",<\/p>\n<p>\u00a0 cwd =&gt; \"\/home\/vagrant\/\",<\/p>\n<p>\u00a0 crea =&gt; \"\/home\/vagrant\/couchbase-server-enterprise_x86_64_2.0.1.deb\",<\/p>\n<p>\u00a0 before =&gt; Paquete['couchbase-servidor']<\/p>\n<p>}<\/p>\n<p>exec {\"install-deps\":<\/p>\n<p>\u00a0 comando =&gt; \"\/usr\/bin\/apt-get install libssl0.9.8\",<\/p>\n<p>\u00a0 before =&gt; Paquete['couchbase-servidor']<\/p>\n<p>}<\/p>\n<p>paquete {\"couchbase-server\":<\/p>\n<p>\u00a0 proveedor =&gt; dpkg,<\/p>\n<p>\u00a0 asegurar =&gt; instalado,<\/p>\n<p>\u00a0 source =&gt; \"\/home\/vagrant\/couchbase-server-enterprise_x86_64_2.0.1.deb\"<\/p>\n<p>}<\/p><\/div>\n<\/div>\n<p>Repasemos el interior una vez m\u00e1s.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">exec { \"couchbase-server-source\": <\/p>\n<p>\u00a0 comando =&gt; \"\/usr\/bin\/wget https:\/\/packages.couchbase.com\/releases\/2.0.1\/couchbase-server-enterprise_x86_64_2.0.1.deb\",<\/p>\n<p>\u00a0 cwd =&gt; \"\/home\/vagrant\/\",<\/p>\n<p>\u00a0 crea =&gt; \"\/home\/vagrant\/couchbase-server-enterprise_x86_64_2.0.1.deb\",<\/p>\n<p>\u00a0 before =&gt; Paquete['couchbase-servidor']<\/p>\n<p>}<\/p><\/div>\n<\/div>\n<p>En puppet, definimos algunas tareas que queremos ejecutar. Esta tarea ejecuta un comando shell <em>wget<\/em> y almacena el archivo dentro del directorio home del usuario. Le decimos a puppet que descargue el paquete debian del servidor. Tenga en cuenta que hay un <em>antes de<\/em> a la tarea de instalaci\u00f3n del paquete, porque no podemos instalarlo antes de que no se haya descargado el archivo.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">exec {\"install-deps\":<\/p>\n<p>\u00a0 comando =&gt; \"\/usr\/bin\/apt-get install libssl0.9.8\",<\/p>\n<p>\u00a0 before =&gt; Paquete['couchbase-servidor']<\/p>\n<p>}<\/p><\/div>\n<\/div>\n<p>We also need to install `libssl0.9.8` on the server, this is the only dependency it has. We use the command line tool <em>apt-get<\/em> por esto.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">paquete {\"couchbase-server\":<\/p>\n<p>\u00a0 proveedor =&gt; dpkg,<\/p>\n<p>\u00a0 asegurar =&gt; instalado,<\/p>\n<p>\u00a0 source =&gt; \"\/home\/vagrant\/couchbase-server-enterprise_x86_64_2.0.1.deb\"<\/p>\n<p>}<\/p><\/div>\n<\/div>\n<p>Por \u00faltimo, podemos instalar el paquete debian de couchbase-server, porque el archivo est\u00e1 en su lugar y todas las dependencias est\u00e1n satisfechas.<\/p>\n<p>Por supuesto, este archivo puppet es muy simple y estoy que se puede hacer mucho m\u00e1s con \u00e9l (y tal vez incluso simplificar a\u00fan m\u00e1s) - pero para mis necesidades es m\u00e1s que suficiente. Si quiero una versi\u00f3n diferente del servidor, solo necesito cambiar el archivo puppet y apuntarlo al nuevo paquete debian.<\/p>\n<p>Ahora bien, si ejecutamos <em>vagabundo arriba<\/em> de nuevo, ocurre mucho m\u00e1s. Tenga en cuenta que si desea jugar con sus archivos de t\u00edteres, tambi\u00e9n puede utilizar <em>provisi\u00f3n para vagabundos<\/em> para aplicar los cambios mientras el nodo est\u00e1 funcionando.<\/p>\n<p>Si todo va bien, la salida deber\u00eda tener este aspecto:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">Arrancando la m\u00e1quina 'nodo1' con el proveedor 'virtualbox'...<\/p>\n<p>Arrancando la m\u00e1quina 'node2' con el proveedor 'virtualbox'...<\/p>\n<p>Poniendo en marcha la m\u00e1quina 'node3' con el proveedor 'virtualbox'...<\/p>\n<p>Poniendo en marcha la m\u00e1quina 'node4' con el proveedor 'virtualbox'...<\/p>\n<p>[nodo1] Borrando los puertos reenviados previamente configurados...<\/p>\n<p>[nodo1] Creando metadatos de carpetas compartidas...<\/p>\n<p>[nodo1] Borrando cualquier interfaz de red previamente configurada...<\/p>\n<p>[nodo1] Preparando interfaces de red basadas en la configuraci\u00f3n...<\/p>\n<p>[nodo1] Reenviando puertos...<\/p>\n<p>[nodo1] - 22 =&gt; 2222 (adaptador 1)<\/p>\n<p>[nodo1] Ejecutando cualquier personalizaci\u00f3n VM...<\/p>\n<p>[nodo1] Arrancando VM...<\/p>\n<p>[Nodo1] Esperando a que la m\u00e1quina virtual arranque. Esto puede tardar unos minutos.<\/p>\n<p>[nodo1] \u00a1VM arrancada y lista para usar!<\/p>\n<p>[nodo1] Configurando y habilitando interfaces de red...<\/p>\n<p>[nodo1] Montando carpetas compartidas...<\/p>\n<p>[nodo1] - \/vagrant<\/p>\n<p>[node1] - \/tmp\/vagrant-puppet\/manifests<\/p>\n<p>[nodo1] Ejecutando provisioner: puppet...<\/p>\n<p>Ejecutando Puppet con default.pp...<\/p>\n<p>stdin: no es un tty<\/p>\n<p>aviso: \/Stage[main]\/\/Exec[install-deps]\/returns: ejecutado con \u00e9xito<\/p>\n<p>aviso: Finalizada la ejecuci\u00f3n del cat\u00e1logo en 0,77 segundos<\/p>\n<p>.... m\u00e1s para todos los dem\u00e1s nodos.<\/p><\/div>\n<\/div>\n<p>A continuaci\u00f3n, puede dirigir su navegador a <em>192.168.56.10[1-4] <\/em>y trabajar con tu cluster Couchbase. Si ya has terminado, puedes utilizar la funci\u00f3n <em>detenci\u00f3n de vagabundos<\/em> para apagarlo limpiamente. Tambi\u00e9n es muy \u00fatil <em>vagrant suspender<\/em>que guardar\u00e1 el estado de los nodos en lugar de apagarlos por completo.<\/p>\n<p>Si quieres interactuar con uno de los nodos en lugar de con todo el cluster, siempre puedes especificar el identificador del nodo. Por ejemplo, si quieres arrancar s\u00f3lo el primer nodo puedes hacerlo con la opci\u00f3n <em>vagrant up nodo1<\/em> mando.<\/p>\n<p>Para m\u00ed, esta es una forma muy r\u00e1pida y limpia de aprovisionar nodos de servidor. S\u00f3lo tengo que cambiar unas pocas l\u00edneas en un archivo y obtener un nuevo cl\u00faster sin mucha molestia. A\u00fan m\u00e1s importante, puedo poner esos archivos de configuraci\u00f3n en el control de versiones y <a href=\"https:\/\/github.com\/daschl\/vagrants\">comp\u00e1rtelos<\/a>\u00a0\u00a1con otra gente!<\/p>","protected":false},"excerpt":{"rendered":"<p>[This blog was syndicated from https:\/\/nitschinger.at\/] \u00a0 Motivation Since I work as part of the engineering team at Couchbase, I need to run my code against a variety of server deployments. We run a multitude of operating systems and software [&hellip;]<\/p>","protected":false},"author":19,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[1250],"ppma_author":[8987],"class_list":["post-1543","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-vagrant"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Couchbase Cluster in Minutes with Vagrant and Puppet - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-minutes-vagrant-and-puppet\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Couchbase Cluster in Minutes with Vagrant and Puppet\" \/>\n<meta property=\"og:description\" content=\"[This blog was syndicated from https:\/\/nitschinger.at\/] \u00a0 Motivation Since I work as part of the engineering team at Couchbase, I need to run my code against a variety of server deployments. We run a multitude of operating systems and software [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-minutes-vagrant-and-puppet\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-17T23:41:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Michael Nitschinger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@daschl\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Nitschinger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/\"},\"author\":{\"name\":\"Michael Nitschinger\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d\"},\"headline\":\"A Couchbase Cluster in Minutes with Vagrant and Puppet\",\"datePublished\":\"2014-12-17T23:41:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/\"},\"wordCount\":1501,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Vagrant\"],\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/\",\"name\":\"A Couchbase Cluster in Minutes with Vagrant and Puppet - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-17T23:41:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Couchbase Cluster in Minutes with Vagrant and Puppet\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d\",\"name\":\"Michael Nitschinger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95e178617974d46e3b02dd1754a3f60b\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"caption\":\"Michael Nitschinger\"},\"description\":\"Michael Nitschinger works as a Principal Software Engineer at Couchbase. He is the architect and maintainer of the Couchbase Java SDK, one of the first completely reactive database drivers on the JVM. He also authored and maintains the Couchbase Spark Connector. Michael is active in the open source community, a contributor to various other projects like RxJava and Netty.\",\"sameAs\":[\"https:\/\/nitschinger.at\",\"https:\/\/x.com\/daschl\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/michael-nitschinger\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A Couchbase Cluster in Minutes with Vagrant and Puppet - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-minutes-vagrant-and-puppet\/","og_locale":"es_MX","og_type":"article","og_title":"A Couchbase Cluster in Minutes with Vagrant and Puppet","og_description":"[This blog was syndicated from https:\/\/nitschinger.at\/] \u00a0 Motivation Since I work as part of the engineering team at Couchbase, I need to run my code against a variety of server deployments. We run a multitude of operating systems and software [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-cluster-minutes-vagrant-and-puppet\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-17T23:41:44+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Michael Nitschinger","twitter_card":"summary_large_image","twitter_creator":"@daschl","twitter_misc":{"Written by":"Michael Nitschinger","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/"},"author":{"name":"Michael Nitschinger","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d"},"headline":"A Couchbase Cluster in Minutes with Vagrant and Puppet","datePublished":"2014-12-17T23:41:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/"},"wordCount":1501,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Vagrant"],"articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/","name":"A Couchbase Cluster in Minutes with Vagrant and Puppet - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-17T23:41:44+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-minutes-vagrant-and-puppet\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"A Couchbase Cluster in Minutes with Vagrant and Puppet"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d","name":"Michael Nitschinger","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95e178617974d46e3b02dd1754a3f60b","url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","caption":"Michael Nitschinger"},"description":"Michael Nitschinger trabaja como Ingeniero de Software Principal en Couchbase. Es el arquitecto y mantenedor del SDK Java de Couchbase, uno de los primeros controladores de bases de datos completamente reactivos en la JVM. Tambi\u00e9n es autor y mantiene el conector Spark de Couchbase. Michael participa activamente en la comunidad de c\u00f3digo abierto, contribuyendo a otros proyectos como RxJava y Netty.","sameAs":["https:\/\/nitschinger.at","https:\/\/x.com\/daschl"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/michael-nitschinger\/"}]}},"authors":[{"term_id":8987,"user_id":19,"is_guest":0,"slug":"michael-nitschinger","display_name":"Michael Nitschinger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","author_category":"","last_name":"Nitschinger, Principal Software Engineer, Couchbase","first_name":"Michael","job_title":"","user_url":"https:\/\/nitschinger.at","description":"Michael Nitschinger trabaja como Ingeniero de Software Principal en Couchbase. Es el arquitecto y mantenedor del SDK Java de Couchbase, uno de los primeros controladores de bases de datos completamente reactivos en la JVM. Tambi\u00e9n es autor y mantiene el conector Spark de Couchbase. Michael participa activamente en la comunidad de c\u00f3digo abierto, contribuyendo a otros proyectos como RxJava y Netty."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1543","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1543"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1543\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=1543"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1543"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1543"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}