{"id":366,"date":"2021-08-24T18:29:59","date_gmt":"2021-08-24T17:29:59","guid":{"rendered":"https:\/\/www.netexpertise.eu\/es\/?p=366"},"modified":"2021-08-24T18:30:02","modified_gmt":"2021-08-24T17:30:02","slug":"ansible-6x-mas-rapido-con-estos-3-consejos","status":"publish","type":"post","link":"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html","title":{"rendered":"Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos"},"content":{"rendered":"\n<p><a href=\"\/es\/category\/devops\/ansible\">Ansible<\/a> es generalmente lento porque se conecta al host remoto para cada tarea que realiza. Hagamos algunas pruebas en un rol peque\u00f1o que obtiene la \u00faltima versi\u00f3n de kubectl (cliente de Kubernetes) de una URL e instala el binario.<br>Veamos 3 formas sencillas de acelerar Ansible y obtener mejores tiempos de ejecuci\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">- name: Recuperando la \u00faltima versi\u00f3n\n   uri:\n     url: \"{{kubectl_url}}\/stable.txt\"\n     return_content: yes\n     status_code: 200\n   register: kubectl_latest_version\n \n\n - name: Descarga del binario de kubectl\n   get_url:\n     url: \"{{kubectl_url}}\/v{{ kubectl_version |\n       default(kubectl_latest_version.content | \n       regex_replace('^v', '')) }}\/bin\/{{kubectl_os}}\/{{kubectl_arch}}\/kubectl\"\n     dest: \"\/usr\/local\/bin\"\n     mode: '755'\n     owner: \"{{ kubectl_owner }}\"\n     group: \"{{ kubectl_group }}\"<\/code><\/pre>\n\n\n\n<p><br>Tiempo de ejecuci\u00f3n con configuraci\u00f3n predeterminada: <strong><span class=\"has-inline-color has-vivid-red-color\">32,2s<\/span><\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" src=\"http:\/\/www.netexpertise.eu\/images\/Speedup_Ansible.png\" alt=\"Acelerar Ansible\" width=\"579\" height=\"347\"\/><\/figure><\/div>\n\n\n\n<h2><br>Cach\u00e9 de Facts Ansible<\/h2>\n\n\n\n<p>Recuperar los facts es la primera tarea que Ansible realiza cuando se conecta a un host y lo menos que podemos decir es que es lento. Muy lento. El rendimiento tambi\u00e9n es un problema cuando se escribe un playbook que se prueba una y otra vez.<\/p>\n\n\n\n<p>Afortunadamente, es posible hacer ajustes para ahorrar tiempo agregando estas pocas l\u00edneas en ansible.cfg:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"># implementaci\u00f3n de cach\u00e9 y configuraci\u00f3n de facts\n# para un mejor rendimiento\n\ngathering = smart\ngather_subset = !hardware,!facter,!ohai\n\nfact_caching_connection = \/tmp\/ansible_fact_cache\nfact_caching = jsonfile\n\n# expira la cach\u00e9 despu\u00e9s de 2 horas\nfact_caching_timeout = 7200<\/code><\/pre>\n\n\n\n<p>Seg\u00fan el archivo de ejemplo <a href=\"https:\/\/github.com\/ansible\/ansible\/blob\/devel\/examples\/ansible.cfg\" target=\"_blank\" rel=\"noreferrer noopener\">ansible.cfg<\/a> disponible en l\u00ednea, smart gathering \u00abrecupera de forma predeterminada, pero solo si a\u00fan no lo ha hecho\u00bb.<\/p>\n\n\n\n<p>Los facts de hardware tardan m\u00e1s en recopilarse, pero es posible que los necesite, especialmente si sus funciones se basan en interfaces de red. Es posible que reciba un error \u00abansible_eth0 is undefined\u00bb, por ejemplo.<br>Facter y ohai est\u00e1n relacionados con los clientes Puppet y Chef.<\/p>\n\n\n\n<p>Y el m\u00e1s eficiente es el cach\u00e9, por supuesto, que almacena la informaci\u00f3n en un archivo JSON. Pero tambi\u00e9n podr\u00eda estar en la memoria, o en una base de datos compartida de Redis.<\/p>\n\n\n\n<p>Tambi\u00e9n puede desactivar los facts en un playbook si no los necesita. Esta es una recompensa potencialmente significativa, pero no se puede usar con frecuencia, la mayor\u00eda de los playbooks necesitan los facts.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">- name: mon_playbook\n    hosts: *\n    gather_facts: no\n    tasks:<\/code><\/pre>\n\n\n\n<p><br>Duraci\u00f3n: <strong><span class=\"has-inline-color has-vivid-red-color\">19,2s<\/span><\/strong><\/p>\n\n\n\n<h2><br>Acelerar SSH con Pipelining<\/h2>\n\n\n\n<p>Permitiendo el pipelining reduce el n\u00famero de operaciones de SSH necesarios para ejecutar un m\u00f3dulo en el servidor remoto. Esto mejora el rendimiento, pero primero debe deshabilitar &#8216;requiretty&#8217; en \/etc\/sudoers en todos los hosts administrados. Raz\u00f3n por la que el pipelining est\u00e1 deshabilitada de forma predeterminada. Agregue ansible.cfg:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"vim\" class=\"language-vim\">[ssh_connection]\npipelining = True<\/code><\/pre>\n\n\n\n<p>Si se establece requiretty, sudo solo funcionar\u00e1 si el usuario est\u00e1 conectado a un tty real. En este caso, sudo solo se iniciar\u00e1 en una sesi\u00f3n de inicio de sesi\u00f3n y no en un script cron o cgi-bin. Sin embargo, esta configuraci\u00f3n est\u00e1 deshabilitada de forma predeterminada de acuerdo con la p\u00e1gina de manual, en Debian y Ubuntu de todos modos. Por lo tanto, podemos considerar el uso de pipelining en este caso. Consulte la p\u00e1gina de manual de su distribuci\u00f3n de Linux.<\/p>\n\n\n\n<p><br>Duraci\u00f3n: <strong><span class=\"has-inline-color has-vivid-red-color\">11,6s<\/span><\/strong><\/p>\n\n\n\n<h2><br>Delegate_to localhost<\/h2>\n\n\n\n<p>La mayor\u00eda de las mejoras dependen de c\u00f3mo escriba sus trabajos de Ansible. En este rol, podr\u00eda conectarse a la URL desde cualquier host: \u00bflocalhost? &#8211; y guarde una conexi\u00f3n SSH. Este es el prop\u00f3sito de delegate_to, que a menudo se apunta a localhost. La primera tarea se convierte en:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">- name: get kubectl last version\n   delegate_to: localhost\n   become: false\n   uri:\n     url: \"{{kubectl_url}}\/stable.txt\"\n     return_content: yes\n     status_code: 200\n   register: kubectl_latest_version<\/code><\/pre>\n\n\n\n<p><br>Esta es una optimizaci\u00f3n considerable que puede utilizar siempre que la tarea se pueda ejecutar en cualquier lugar.<\/p>\n\n\n\n<p>Es mejor agregar <em>become: false<\/em> o podr\u00eda recibir este mensaje de error si Ansible intenta hacer sudo root en su m\u00e1quina local:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">fatal: [backup]: FAILED! => {\"changed\": false, \"module_stderr\": \"sudo: a password is required\\n\", \"module_stdout\": \"\", \"msg\": \"MODULE FAILURE\\nSee stdout\/stderr for the exact error\", \"rc\": 1}<\/code><\/pre>\n\n\n\n<p><br>Duraci\u00f3n: <strong><span class=\"has-inline-color has-vivid-red-color\">4,7s<\/span><\/strong><\/p>\n\n\n\n<p><br>El tiempo de ejecuci\u00f3n es el tiempo promedio de 10 ejecuciones consecutivas, y las pruebas se realizaron en un enlace VPN, lejos de ser \u00f3ptimo.<\/p>\n\n\n\n<p>Por supuesto que los resultados no son lineales, no todos los playbooks se ejecutar\u00e1n 6 veces m\u00e1s r\u00e1pido pero da una idea. El cach\u00e9 ahorra unos segundos al iniciar el playbook, mientras que la delegaci\u00f3n a localhost solo se aplica en algunos casos.<\/p>\n\n\n\n<p>Hay otras mejoras que se pueden realizar para acelerar Ansible, como las tareas <a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_async.html\">as\u00edncronas<\/a> para iniciar una tarea y seguir adelante de inmediato. Pero lo mejor que puede hacer es ejecutar Ansible en una m\u00e1quina lo m\u00e1s cerca posible de los hosts de destino.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ansible es generalmente lento porque se conecta al host remoto para cada tarea que realiza. Hagamos algunas pruebas en un rol peque\u00f1o que obtiene la \u00faltima versi\u00f3n de kubectl (cliente de Kubernetes) de una URL e instala el binario.Veamos 3 formas sencillas de acelerar Ansible y obtener mejores tiempos de ejecuci\u00f3n. Tiempo de ejecuci\u00f3n con [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[63],"tags":[67],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Netexpertise - Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos<\/title>\n<meta name=\"description\" content=\"\u00bfAnsible es demasiado lento? Acelerar Ansible con 3 consejos, as\u00ed como otras optimizaciones de rendimiento para hacerlo m\u00e1s r\u00e1pido\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Netexpertise - Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos\" \/>\n<meta property=\"og:description\" content=\"\u00bfAnsible es demasiado lento? Acelerar Ansible con 3 consejos, as\u00ed como otras optimizaciones de rendimiento para hacerlo m\u00e1s r\u00e1pido\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html\" \/>\n<meta property=\"og:site_name\" content=\"Netexpertise\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-24T17:29:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-24T17:30:02+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.netexpertise.eu\/images\/Speedup_Ansible.png\" \/>\n<meta name=\"author\" content=\"dave\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@netexpertise\" \/>\n<meta name=\"twitter:site\" content=\"@netexpertise\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html\",\"url\":\"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html\",\"name\":\"Netexpertise - Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos\",\"isPartOf\":{\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#website\"},\"datePublished\":\"2021-08-24T17:29:59+00:00\",\"dateModified\":\"2021-08-24T17:30:02+00:00\",\"author\":{\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf\"},\"description\":\"\u00bfAnsible es demasiado lento? Acelerar Ansible con 3 consejos, as\u00ed como otras optimizaciones de rendimiento para hacerlo m\u00e1s r\u00e1pido\",\"breadcrumb\":{\"@id\":\"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.netexpertise.eu\/es\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#website\",\"url\":\"https:\/\/www.netexpertise.eu\/es\/\",\"name\":\"Netexpertise\",\"description\":\"Sistemas \/ Redes \/ DevOps\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.netexpertise.eu\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf\",\"name\":\"dave\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"caption\":\"dave\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Netexpertise - Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos","description":"\u00bfAnsible es demasiado lento? Acelerar Ansible con 3 consejos, as\u00ed como otras optimizaciones de rendimiento para hacerlo m\u00e1s r\u00e1pido","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":"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html","og_locale":"es_ES","og_type":"article","og_title":"Netexpertise - Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos","og_description":"\u00bfAnsible es demasiado lento? Acelerar Ansible con 3 consejos, as\u00ed como otras optimizaciones de rendimiento para hacerlo m\u00e1s r\u00e1pido","og_url":"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html","og_site_name":"Netexpertise","article_published_time":"2021-08-24T17:29:59+00:00","article_modified_time":"2021-08-24T17:30:02+00:00","og_image":[{"url":"http:\/\/www.netexpertise.eu\/images\/Speedup_Ansible.png"}],"author":"dave","twitter_card":"summary_large_image","twitter_creator":"@netexpertise","twitter_site":"@netexpertise","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html","url":"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html","name":"Netexpertise - Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos","isPartOf":{"@id":"https:\/\/www.netexpertise.eu\/es\/#website"},"datePublished":"2021-08-24T17:29:59+00:00","dateModified":"2021-08-24T17:30:02+00:00","author":{"@id":"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf"},"description":"\u00bfAnsible es demasiado lento? Acelerar Ansible con 3 consejos, as\u00ed como otras optimizaciones de rendimiento para hacerlo m\u00e1s r\u00e1pido","breadcrumb":{"@id":"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.netexpertise.eu\/es\/devops\/ansible\/ansible-6x-mas-rapido-con-estos-3-consejos.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.netexpertise.eu\/es"},{"@type":"ListItem","position":2,"name":"Ansible 6X m\u00e1s R\u00e1pido con estos 3 Consejos"}]},{"@type":"WebSite","@id":"https:\/\/www.netexpertise.eu\/es\/#website","url":"https:\/\/www.netexpertise.eu\/es\/","name":"Netexpertise","description":"Sistemas \/ Redes \/ DevOps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.netexpertise.eu\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf","name":"dave","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/image\/","url":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","caption":"dave"}}]}},"_links":{"self":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/366"}],"collection":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/comments?post=366"}],"version-history":[{"count":12,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/366\/revisions"}],"predecessor-version":[{"id":378,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/366\/revisions\/378"}],"wp:attachment":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/media?parent=366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/categories?post=366"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/tags?post=366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}