{"id":4068,"date":"2017-10-02T04:27:43","date_gmt":"2017-10-02T11:27:43","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4068"},"modified":"2019-06-26T00:27:39","modified_gmt":"2019-06-26T07:27:39","slug":"infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/","title":{"rendered":"Infraestructura como c\u00f3digo: Couchbase distributed cluster best practices - Parte 1 introducci\u00f3n y teor\u00eda \u00a0"},"content":{"rendered":"<p><em>Arkadiusz Borucki trabaja como<\/em><strong>\u00a0<\/strong><em>a<\/em><strong>\u00a0<\/strong><em>Ingeniero de fiabilidad de sitios en Amadeus, centrado en bases de datos NoSQL y automatizaci\u00f3n. En su trabajo diario, utiliza Couchbase, MongoDB, Oracle, Python y Ansible. Es un autoproclamado entusiasta de los grandes datos, interesado en las tecnolog\u00edas de almacenamiento de datos, sistemas distribuidos, an\u00e1lisis y automatizaci\u00f3n. Es ponente en varias conferencias y grupos de usuarios en Estados Unidos y Europa. Puedes encontrarle en Twitter en <\/em><em>@_Aras_B<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4067\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/10\/pasted-image-0-1.png\" alt=\"pasted image 0 1\" width=\"283\" height=\"421\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/pasted-image-0-1.png 319w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/pasted-image-0-1-201x300.png 201w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/pasted-image-0-1-300x447.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/pasted-image-0-1-13x20.png 13w\" sizes=\"auto, (max-width: 283px) 100vw, 283px\" \/><\/p>\n<p><strong>Motivaci\u00f3n: Por qu\u00e9 utilizar la Infraestructura como C\u00f3digo<\/strong><\/p>\n<p>Muchos equipos inform\u00e1ticos siguen confiando en la configuraci\u00f3n manual para gestionar la infraestructura: todav\u00eda se utilizan procedimientos antiguos y secuencias de comandos de shell obsoletas.<\/p>\n<p>A veces, los miembros de un mismo equipo utilizan procedimientos y scripts diferentes para la misma granja de bases de datos. Esas personas pueden abandonar la empresa sin compartir conocimientos ni consejos. Este enfoque da lugar a problemas, errores, despliegues lentos y entornos incoherentes.<\/p>\n<p>Las granjas de servidores son cada vez m\u00e1s grandes y el tama\u00f1o de los datos pasa de gigabytes a tera o petabytes. Una sola m\u00e1quina ya no es capaz de manejar esta cantidad de datos. Por tanto, tenemos que escalar nuestra base de datos horizontalmente, utilizar m\u00e1s m\u00e1quinas y distribuir los datos entre ellas.<\/p>\n<p>Cuando tengamos dos, cinco o diez agrupaciones \"de la vieja escuela\" creadas sobre la base de procedimientos y guiones, ser\u00e1 suficiente. Los problemas surgen cuando la explotaci\u00f3n crece r\u00e1pidamente.<\/p>\n<ul>\n<li><em>\u00bfQu\u00e9 hacer cuando el despliegue tiene cientos de servidores?<\/em><em>\u00a0<\/em><\/li>\n<li><em>C\u00f3mo asegurarse <\/em><em>el <\/em><em>entorno es coherente?<\/em><\/li>\n<li><em>C\u00f3mo controlar lo que se instala en <\/em><em>el<\/em><em>\u00a0\u00bfM\u00e1quinas?<\/em><\/li>\n<li><em>C\u00f3mo realizar un seguimiento de todos <\/em><em>el <\/em><em>\u00bfcambios?<\/em><\/li>\n<\/ul>\n<p>La informaci\u00f3n sobre la configuraci\u00f3n de la infraestructura debe estar centralizada. La infraestructura debe tratarse como el software -\u00a0<strong>como c\u00f3digo <\/strong>que pueden gestionarse con las mismas herramientas y procesos que utilizan los desarrolladores de software. Por ejemplo, utilizar c\u00f3digo para describir la infraestructura. Cree un <strong>modelo <\/strong>de su despliegue de Couchbase - como c\u00f3digo con <strong>control de versiones<\/strong>\u00a0en \u00e9l. No s\u00f3lo podr\u00e1s hacer un seguimiento de qui\u00e9n ha hecho qu\u00e9, sino que tambi\u00e9n podr\u00e1s volver a una configuraci\u00f3n anterior. El despliegue de Couchbase ser\u00e1 consistente porque se aplicar\u00e1 la misma configuraci\u00f3n a todas las m\u00e1quinas. Para prevenir futuros problemas e interrupciones tu granja de Couchbase debe ser consistente, la configuraci\u00f3n debe estar centralizada y dividida entre entornos de producci\u00f3n y no producci\u00f3n.<\/p>\n<p>Puedes probar nuevas configuraciones y ajustes en la rama de pruebas o desarrollo antes de aplicar esos cambios en la de producci\u00f3n.<\/p>\n<p><strong>Codif\u00edquelo todo<\/strong><\/p>\n<p><strong>Utilice el c\u00f3digo <\/strong>para describir la infraestructura. Utilice <strong>Ansible <\/strong>para la gesti\u00f3n de servidores f\u00edsicos o virtuales (aplicaci\u00f3n de parches, actualizaciones, gesti\u00f3n de la configuraci\u00f3n, gesti\u00f3n de redes, despliegue de nuevos cl\u00fasteres, orquestaci\u00f3n).<\/p>\n<p><strong>Versi\u00f3n todo<\/strong><\/p>\n<p>Utilice <strong>Git<\/strong>\u00a0para gestionar la infraestructura como un repositorio de c\u00f3digo. <strong>Git<\/strong>\u00a0es un sistema de control de versiones distribuido de c\u00f3digo abierto. Utilice un <strong>ramificaci\u00f3n<\/strong>\u00a0seg\u00fan las necesidades de su empresa (rama de producci\u00f3n y rama de pruebas).<\/p>\n<p><strong>Gestione su despliegue de Couchbase con Git<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"982\" height=\"468\" class=\"wp-image-4066\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/10\/pasted-image-0.png\" alt=\"pasted image 0\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/pasted-image-0.png 982w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/pasted-image-0-300x143.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/pasted-image-0-768x366.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/pasted-image-0-20x10.png 20w\" sizes=\"auto, (max-width: 982px) 100vw, 982px\" \/><\/p>\n<p><strong>Un dep\u00f3sito<\/strong><\/p>\n<p>Utiliza una infraestructura Git como repositorio de c\u00f3digo por organizaci\u00f3n o empresa. En un repositorio Git puedes tener varias ramas (producci\u00f3n, desarrollo, pruebas, staging, etc.).<\/p>\n<p><strong>A<\/strong><strong>nsible: C\u00f3mo operar de forma distribuida <\/strong><strong>Couchbase<\/strong><strong>\u00a0grupo<\/strong><\/p>\n<p>Las operaciones manuales en una granja de bases de datos consumen tiempo y recursos. M\u00e1s operaciones manuales conllevan m\u00e1s errores humanos, m\u00e1s sobrecarga e incoherencia.<\/p>\n<p>\u00bfSe imagina una granja con 400 servidores? \u00bfCu\u00e1nto tiempo se tarda en entrar en cada m\u00e1quina y cambiar la configuraci\u00f3n? \u00bfY si se salta una o dos m\u00e1quinas? \u00bfY si aplica por error configuraciones diferentes en algunas m\u00e1quinas?<\/p>\n<p><strong>Ansible<\/strong>\u00a0es una herramienta perfecta para la gesti\u00f3n de la configuraci\u00f3n y la orquestaci\u00f3n de su infraestructura. Usando Ansible puedes ir con<strong>\u00a0<\/strong><strong>Infraestructura como c\u00f3digo<\/strong><em>\u00a0<\/em><em>(mantener la definici\u00f3n del servidor Couchbase en el repositorio Git, rastrear los cambios, y utilizar todas las ventajas que vienen con el control de versiones Git).<\/em><\/p>\n<p>Utilizar Ansible <strong>m\u00f3dulo git<\/strong>\u00a0para desplegar cambios desde el repositorio Git en su granja de bases de datos distribuidas. El m\u00f3dulo git de Ansible toma el c\u00f3digo de la url git especificada y lo coloca en el directorio de destino.<\/p>\n<ul>\n<li>Ansible no tiene agente y utiliza un enfoque push (SSH).<\/li>\n<li>Ansible se basa en archivos YAML.<\/li>\n<li>Es una buena alternativa a Puppet.<\/li>\n<li>Ansible reduce los pasos manuales en los servidores.<\/li>\n<li><em>Ansible ayuda a <\/em><em>Reducci\u00f3n 95%<\/em><em>\u00a0en gastos generales de explotaci\u00f3n<\/em><\/li>\n<\/ul>\n<p><strong>Automatizaci\u00f3n<\/strong><\/p>\n<ul>\n<li>Reduzca la sobrecarga y los errores humanos, acelere los procesos, proporcione coherencia: utilice Ansible para la automatizaci\u00f3n de su granja de Couchbase.<\/li>\n<\/ul>\n<p><strong>Orquestaci\u00f3n<\/strong><\/p>\n<ul>\n<li>Pongamos l\u00f3gica en la automatizaci\u00f3n y eliminemos pasos repetitivos. Ansible tambi\u00e9n puede utilizarse como orquestador.<\/li>\n<\/ul>\n<p><strong>Automatizaci\u00f3n<\/strong>\u00a0se ocupa de una \u00fanica tarea: iniciar el servicio Couchbase, configurar un cl\u00faster, detener el proceso Couchbase.<\/p>\n<p><strong>Orquestaci\u00f3n<\/strong>\u00a0se ocupa de automatizar la ejecuci\u00f3n del flujo de trabajo de un proceso.<\/p>\n<p># Ejemplo de git checkout desde Ansible Playbook<\/p>\n<pre class=\"lang:default decode:true\">---\r\n\r\n- name:\u00a0\"git checkout\"\r\n- git:\r\n\u00a0 \u00a0repo: 'https:\/\/server\/path\/to\/repo.git'\r\n\u00a0 \u00a0dest: \/opt\/couchbase\r\n\u00a0 \u00a0version: staging<\/pre>\n<p>Utiliza la opci\u00f3n de versi\u00f3n para especificar una rama en particular, una etiqueta o un identificador de confirmaci\u00f3n. Una vez que extraigas el c\u00f3digo del repositorio Git puedes aplicarlo a tu despliegue de Couchbase. Puedes aplicarlo en todos los servidores o s\u00f3lo en una parte de la granja. Tambi\u00e9n puedes especificar una lista de hosts en el archivo de inventario de Ansible y ejecutarlo as\u00ed:<\/p>\n<p># Ejemplo ejecutar Ansible Playbook para cluster \"couchstg\"<\/p>\n<pre class=\"lang:default decode:true\">ansible-playbook -i .\/inventory\/hosts.inv\u00a0-l 'couchstg' .\/couchbase_upgradel.yml --ask-vault-pass\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Git<\/strong><strong>: \u00bfQu\u00e9 podemos guardar en Git?<\/strong><\/p>\n<p><em>Configuraci\u00f3n del servidor <\/em><em>repositorios<\/em><em>:<\/em><\/p>\n<ul>\n<li>La disposici\u00f3n por defecto de los sistemas de archivos<\/li>\n<li>Lista de paquetes linux necesarios<\/li>\n<li>Par\u00e1metros del n\u00facleo<\/li>\n<li>Usuarios y grupos necesarios<\/li>\n<li>Scripts Cron<\/li>\n<li>Ajustes de seguridad<\/li>\n<\/ul>\n<h2><em>Repositorios Couchbase\/Ansible:<\/em><\/h2>\n<ul>\n<li>Definici\u00f3n del cl\u00faster Couchbase<\/li>\n<li>Couchbase Ansible playbooks<\/li>\n<li>Funciones de Couchbase<\/li>\n<li>Archivos de inventario de hosts Couchbase<\/li>\n<li>Configuraci\u00f3n RBAC<\/li>\n<li>Configuraci\u00f3n XDCR<\/li>\n<\/ul>\n<p><strong>A<\/strong><strong>nsible: \u00bfQu\u00e9 debe automatizarse?<\/strong><\/p>\n<ul>\n<li>Despliegue de cl\u00fasteres<\/li>\n<li>Actualizaciones<\/li>\n<li>Escala<\/li>\n<li>Resiliencia<\/li>\n<li>Supervisi\u00f3n<\/li>\n<li>Alerta<\/li>\n<li>Ajustes de seguridad<\/li>\n<li>Copia de seguridad y restauraci\u00f3n<\/li>\n<li>\n<h2>Reequilibrio del cl\u00faster Couchbase<\/h2>\n<\/li>\n<li>Conmutaci\u00f3n por error de Couchbase<\/li>\n<li>Creaci\u00f3n de cubos Couchbase<\/li>\n<li>Kernel Linux y parches de seguridad<\/li>\n<li>Cualquier actividad manual desde la GUI o shell de Couchbase<\/li>\n<\/ul>\n<p>Las instalaciones manuales de cl\u00fasteres y la gesti\u00f3n manual de nodos no deber\u00edan ser soportadas. Automatiza todo lo posible y env\u00eda siempre los cambios de c\u00f3digo a Git. Couchbase proporciona <strong>API REST<\/strong>\u00a0puntos finales. Desde el playbook de Ansible puedes usar m\u00e9todos HTTP - GET, POST, PUT, DELETE.<\/p>\n<p><em>La API REST de Couchbase te permite realizar cualquier cambio en una granja de Couchbase sin un solo clic en la GUI. <\/em><\/p>\n<p>Ansible playbook tambi\u00e9n puede ejecutar comandos CLI de Couchbase:<\/p>\n<p># Ejemplo de auto failover (comandos CLI) desde Ansible Playbook<\/p>\n<pre class=\"lang:default decode:true\">- name: auto failover\r\n\r\n\u00a0 command:\u00a0\/opt\/couchbase\/bin\/couchbase-cli setting-autofailover\u00a0-c \u00a0 localhost --enable-auto-failover={{ autofailover }} --auto-failover-timeout= {{ timeout }} -u {{ admin }} -p {{ passwd }}\r\n\r\n<\/pre>\n<p>o # Ejemplo de reequilibrio desde Ansible Playbook<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">- name: rebalance cluster\r\n\r\n\u00a0 command:\u00a0\/opt\/couchbase\/bin\/couchbase-cli rebalance\u00a0-c localhost \u00a0-u \u00a0{{ admin }} -p {{ passwd }}\r\n\r\n<\/pre>\n<p># Ejemplo Instalar servidor couchbase desde Ansible Playbook<\/p>\n<pre class=\"lang:default decode:true\">- name: \"Install couchbase database\"\r\n\r\n\u00a0\u00a0package: name=couchbase-server state=present\r\n\r\n\u00a0 notify:\r\n\r\n\u00a0 \u00a0 - wait for database start\r\n\r\n\u00a0 tags: installation\r\n\r\n- name: \"Add couchbase database to linux runlevel\"\r\n\r\n\u00a0 service: name=couchbase-server state=started enabled=yes\r\n\r\n\u00a0 tags: installation\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Co<\/strong><strong>uchbase: API REST<\/strong><\/p>\n<p>Couchbase <strong>API REST<\/strong>\u00a0le permite gestionar la implementaci\u00f3n de un servidor Couchbase, as\u00ed como realizar operaciones como almacenar documentos de dise\u00f1o y consultar resultados directamente desde el playbook de Ansible.<\/p>\n<p>Puedes hacer f\u00e1cilmente llamadas a la API REST de Couchbase desde tu c\u00f3digo Ansible. Tambi\u00e9n puedes crear roles Ansible personalizados para Couchbase.<\/p>\n<p>Couchbase ofrece lo siguiente <strong>API REST<\/strong><strong>s<\/strong><strong>:<\/strong><\/p>\n<ul>\n<li><strong>API de cl\u00faster<\/strong>\u00a0- La API REST del cl\u00faster gestiona las operaciones del cl\u00faster<\/li>\n<li><strong>API de nodos de servidor<\/strong>\u00a0- La API REST de nodos de servidor gestiona los nodos de un cl\u00faster<\/li>\n<li><strong>API de grupos de servidores<\/strong>\u00a0- La API REST de grupos de servidores hace referencia a la funci\u00f3n Rack Zone Awareness, que permite agrupaciones l\u00f3gicas de servidores en un cl\u00faster en el que cada grupo de servidores pertenece f\u00edsicamente a un rack o zona de disponibilidad.<\/li>\n<li><strong>API de cubos <\/strong>- La API REST de cubos crea, elimina, vac\u00eda y recupera informaci\u00f3n sobre cubos y operaciones con cubos.<\/li>\n<li><strong>API de vistas<\/strong>\u00a0- La API REST de Views se utiliza para indexar y consultar documentos JSON.<\/li>\n<li><strong>API XDCR <\/strong>- La API XDCR REST se utiliza para gestionar las operaciones de Replicaci\u00f3n entre Centros de Datos (XDCR)<\/li>\n<li><strong>API de registros <\/strong>- La API REST de registros proporciona los puntos finales de la API REST para recuperar informaci\u00f3n de registro y diagn\u00f3stico, as\u00ed como la forma en que un SDK puede a\u00f1adir entradas a un registro<\/li>\n<li><strong>API de usuario <\/strong>- Se crea un usuario de s\u00f3lo lectura con el endpoint URI \/settings\/readOnlyUser - s\u00f3lo se puede crear un usuario de s\u00f3lo lectura<\/li>\n<\/ul>\n<p># ejemplo Ansible vac\u00eda el contenido del cubo especificado a trav\u00e9s de la API REST:<\/p>\n<pre class=\"lang:default decode:true\">- name: \"flush couchbase bucket \u00a0{{ bucket }}\"\r\n\r\n\u00a0 uri:\r\n\r\n\u00a0 \u00a0 url: https:\/\/{{ host }}:{{port}}\/pools\/default\/buckets\/\r\n\r\n{{ bucket }}\/controller\/doFlush\r\n\r\n\u00a0 \u00a0 method: POST\r\n\r\n\u00a0 \u00a0 user: root\r\n\r\n\u00a0 \u00a0 password: \"{{ passwd }}\"\r\n\r\n\u00a0 delegate_to: localhost\r\n\r\n<\/pre>\n<p><em>Resumen<\/em><\/p>\n<p>En un mundo moderno, en el que los datos crecen m\u00e1s r\u00e1pido que nunca y necesitamos cada vez m\u00e1s m\u00e1quinas para poder conservar y mantener nuestros datos, la gesti\u00f3n centralizada y la automatizaci\u00f3n con orquestaci\u00f3n son muy importantes. La coherencia, la reducci\u00f3n de la sobrecarga, la reducci\u00f3n de los errores humanos y la agilizaci\u00f3n de los procesos son buenas razones para empezar a utilizar la infraestructura como c\u00f3digo junto con la automatizaci\u00f3n, la orquestaci\u00f3n, las herramientas y las t\u00e9cnicas relacionadas con esto.<\/p>\n<p>El cl\u00faster distribuido Couchbase es un candidato perfecto. Couchbase funciona bien con herramientas como Ansible y tambi\u00e9n proporciona una \u00fatil interfaz REST API. Los m\u00e9todos de la API REST de Couchbase se pueden llamar desde playbooks de Ansible o scripts de Python.<\/p>\n<p>La pr\u00e1ctica DevOps aumenta la velocidad y la estabilidad de las implantaciones, al tiempo que reduce el tiempo de recuperaci\u00f3n de fallos y los plazos de actualizaci\u00f3n del software.<\/p>\n<p>En la segunda parte de este tutorial mostrar\u00e9 paso a paso c\u00f3mo construir el rol de Ansible para un cluster de Couchbase usando m\u00e9todos de la API REST de Couchbase y comandos de l\u00ednea de comandos.<\/p>","protected":false},"excerpt":{"rendered":"<p>Arkadiusz Borucki works as\u00a0a\u00a0Site Reliability Engineer at Amadeus, focused on NoSQL databases and automation. In his day-to-day work, he uses Couchbase, MongoDB, Oracle, Python, and Ansible. He\u2019s a self-proclaimed big data enthusiast, interested in data store technologies, distributed systems, analytics, [&hellip;]<\/p>","protected":false},"author":53,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816],"tags":[1299],"ppma_author":[9026],"class_list":["post-4068","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","tag-ansible"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"This blog focuses on Why use Infrastructure as Code. Why Ansible tool is used for configuration management and orchestration of your infrastructure.\" \/>\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\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0\" \/>\n<meta property=\"og:description\" content=\"This blog focuses on Why use Infrastructure as Code. Why Ansible tool is used for configuration management and orchestration of your infrastructure.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-02T11:27:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-26T07:27:39+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=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\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\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/\"},\"author\":{\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220\"},\"headline\":\"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0\",\"datePublished\":\"2017-10-02T11:27:43+00:00\",\"dateModified\":\"2019-06-26T07:27:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/\"},\"wordCount\":1360,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Ansible\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/\",\"name\":\"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-10-02T11:27:43+00:00\",\"dateModified\":\"2019-06-26T07:27:39+00:00\",\"description\":\"This blog focuses on Why use Infrastructure as Code. Why Ansible tool is used for configuration management and orchestration of your infrastructure.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#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\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0\"}]},{\"@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\/5f1a0ece4e644bc8c037686fbc8f3220\",\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"caption\":\"Laura Czajkowski, Developer Community Manager, Couchbase\"},\"description\":\"Laura Czajkowski is the Snr. Developer Community Manager at Couchbase overseeing the community. She\u2019s responsible for our monthly developer newsletter.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/laura-czajkowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0 - The Couchbase Blog","description":"This blog focuses on Why use Infrastructure as Code. Why Ansible tool is used for configuration management and orchestration of your infrastructure.","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\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/","og_locale":"es_MX","og_type":"article","og_title":"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0","og_description":"This blog focuses on Why use Infrastructure as Code. Why Ansible tool is used for configuration management and orchestration of your infrastructure.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-10-02T11:27:43+00:00","article_modified_time":"2019-06-26T07:27:39+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":"Laura Czajkowski, Developer Community Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Laura Czajkowski, Developer Community Manager, Couchbase","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/"},"author":{"name":"Laura Czajkowski, Developer Community Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220"},"headline":"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0","datePublished":"2017-10-02T11:27:43+00:00","dateModified":"2019-06-26T07:27:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/"},"wordCount":1360,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Ansible"],"articleSection":["Best Practices and Tutorials","Couchbase Server"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/","url":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/","name":"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-10-02T11:27:43+00:00","dateModified":"2019-06-26T07:27:39+00:00","description":"This blog focuses on Why use Infrastructure as Code. Why Ansible tool is used for configuration management and orchestration of your infrastructure.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#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\/infrastructure-code-couchbase-distributed-cluster-best-practices-part-1-introduction-theory\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Infrastructure as code: Couchbase distributed cluster best practices \u2013 Part 1 introduction and theory \u00a0"}]},{"@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\/5f1a0ece4e644bc8c037686fbc8f3220","name":"Laura Czajkowski, Directora de la Comunidad de Desarrolladores, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409","url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","caption":"Laura Czajkowski, Developer Community Manager, Couchbase"},"description":"Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro bolet\u00edn mensual para desarrolladores.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/laura-czajkowski\/"}]}},"authors":[{"term_id":9026,"user_id":53,"is_guest":0,"slug":"laura-czajkowski","display_name":"Laura Czajkowski, Developer Community Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","author_category":"","last_name":"Czajkowski","first_name":"Laura","job_title":"","user_url":"","description":"Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro bolet\u00edn mensual para desarrolladores."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4068","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\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=4068"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4068\/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=4068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=4068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=4068"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=4068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}