---
title: Primeros pasos con Ansible
description: ¿Qué es Ansible? ¿Cómo instalar Ansible? Aprende a gestionar, aprovisionar, desplegar tus tareas de TI con Ansible siguiendo los consejos de esta guía.
image: https://blog.deiser.com/hubfs/Portada_Post_11.png
---

[![Deiser Blog](https://blog.deiser.com/hubfs/ES/Devoteam/DeiserBlog_Devoteam_logo_negativo.svg "Deiser Blog")](https://blog.deiser.com/es)

[![BACK TO DEISER.COM](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/3363011/36806d56-f0e8-4a64-8033-651e285ac074.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/3363011/36806d56-f0e8-4a64-8033-651e285ac074)

[EN](https://blog.deiser.com/en) | [ES](https://blog.deiser.com/es)

**

[![Deiser Blog](https://blog.deiser.com/hubfs/ES/Devoteam/DeiserBlog_Devoteam_logo_positivo.svg "Deiser Blog")](https://blog.deiser.com/es)

[![BACK TO DEISER.COM](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/3363011/36806d56-f0e8-4a64-8033-651e285ac074.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/3363011/36806d56-f0e8-4a64-8033-651e285ac074)

[EN](https://blog.deiser.com/en) | [ES](https://blog.deiser.com/es)

**

[![Deiser Blog](https://blog.deiser.com/hubfs/ES/Devoteam/DeiserBlog_logo_negativo.svg "Deiser Blog")](https://blog.deiser.com/es)

** **

[EN](https://blog.deiser.com/en) | [ES](https://blog.deiser.com/es)

**

**Menu**

[EN](https://blog.deiser.com/en) | [ES](https://blog.deiser.com/es)

** **

[![Free Pack](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/3363011/b010f050-3ec2-4ec3-a9c6-53c6e31a13eb.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/3363011/b010f050-3ec2-4ec3-a9c6-53c6e31a13eb)

[![Buy Now](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/3363011/45939789-0a7b-42d2-9620-c7619e153fa6.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/3363011/45939789-0a7b-42d2-9620-c7619e153fa6)

Search

![](https://blog.deiser.com/hubfs/Portada_Post_11.png)

[Gestión de servicios de TI](https://blog.deiser.com/es/tag/gestión-de-servicios-de-ti) | [Prácticas DevOps](https://blog.deiser.com/es/tag/prácticas-devops) |

 7 min read

# Primeros pasos con Ansible

[![Carlos Aparicio](https://blog.deiser.com/hubfs/Carlos-Aparicio-ACP-DEISER_1.jpg)](https://blog.deiser.com/es/author/carlos-aparicio)

 Written by [Carlos Aparicio](https://blog.deiser.com/es/author/carlos-aparicio)

 13-ene-2015 10:40:00

- [Tweet](https://twitter.com/share)

## ¿Qué es Ansible?

[Ansible](https://www.ansible.com/home) es una herramienta que nos permite gestionar configuraciones, aprovisionamiento de recursos, despliegue automático de aplicaciones y muchas otras tareas de TI de una forma limpia y sencilla.

## ¿En qué se diferencia de otras herramientas similares?

-    No necesita agentes.
-    No requiere de configuraciones engorrosas y complicadas.
-    Flexibilidad (API, módulos, plugins).
-    Facilidad de uso.

## ¿Quiénes usan Ansible actualmente?

Por su simplicidad Ansible es utilizado por muchísimas empresas. Entre ellas:

- [   Atlassian](https://www.atlassian.com/)
- [   NASA](http://www.nasa.gov)
- [   Evernote](https://www.evernote.com/)
- [   Spotify](https://www.spotify.com/)
- [   Verisign](https://www.verisign.es/)
- [   Deiser](https://www.deiser.com/es/)

## Instalar Ansible

La instalación es bastante simple, una vez instalado no encontrarás base de datos o algún demonio que monitorizar o inicializar.

Sólo es necesario instalarlo en una máquina, que actuará como punto central de la aplicación. Cabe destacar que Ansible no necesita software o herramientas en los nodos donde se ejecute, por lo que el mantenimiento y actualización de la versión es muy sencilla.

## ¿Qué vamos a necesitar?

Para poder avanzar, es necesario disponer de 2 máquinas virtuales.Para efectos de esta guía usaremos [Ubuntu](https://www.ubuntu.com) como sistema operativo en ambos equipos.

-    Máquina central: con IP 192.168.101.103
-    Nodo: con IP 192.168.101.104

## Máquina central (192.168.101.103)

Los requerimientos son los siguientes:

-    Python 2.6+
-    Sistema operativo: Red Hat, Debian, CentOS, OS X. Windows no soportado para la máquina central.

## Nodo (192.168.101.104)

Los requerimientos son los siguientes:

- Python 2.5+

Si la versión de [Python](https://www.python.org/) es inferior, será necesario disponer de python-simplejson

Para la instalación de la máquina central se deben seguir los siguientes pasos:

## YUM

Existen RPM's disponibles para [EPEL](https://fedoraproject.org/wiki/EPEL) 6 y 7 

![sudo yum install ansible-1](https://blog.deiser.com/hs-fs/hubfs/sudo%20yum%20install%20ansible-1.png?width=1244&name=sudo%20yum%20install%20ansible-1.png)

## APT-Ubuntu

![APT-Ubuntu sudo install ansible](https://blog.deiser.com/hs-fs/hubfs/Ansible/APT-Ubuntu%20sudo%20install%20ansible.png?width=1782&name=APT-Ubuntu%20sudo%20install%20ansible.png)

## Debian

![Debian install PyYaml jinja2 paramiko](https://blog.deiser.com/hs-fs/hubfs/Ansible/Debian%20install%20PyYaml%20jinja2%20paramiko.png?width=1785&name=Debian%20install%20PyYaml%20jinja2%20paramiko.png)

## PKG

![sudo pkg install ansible](https://blog.deiser.com/hs-fs/hubfs/Ansible/sudo%20pkg%20install%20ansible.png?width=1783&name=sudo%20pkg%20install%20ansible.png)

## Homebrew

![Hombebrew brew install ansible](https://blog.deiser.com/hs-fs/hubfs/Ansible/Hombebrew%20brew%20install%20ansible.png?width=1785&name=Hombebrew%20brew%20install%20ansible.png)

## Primer comando

Ya hemos instalado Ansible en nuestra distribución favorita, ahora vamos ejecutar nuestro primer comando desde la máquina central.

Lo primero que necesitamos es crear/modificar el fichero /etc/ansible/hosts donde vamos a indicar los distintos nodos sobre los cuales vamos a realizar las tareas automáticas. En nuestro caso, vamos a indicar el nodo que tenemos disponible para las pruebas:![webserver addresss](https://blog.deiser.com/hs-fs/hubfs/Ansible/webserver%20addresss.png?width=1783&name=webserver%20addresss.png)

Una buena descripción sobre la configuración de nuestro fichero hosts se puede encontrar [aquí](https://docs.ansible.com/intro_inventory.html).

Ahora debemos asegurarnos de disponer de una autenticación por llave SSH con el nodo. Para ello abrimos una consola en la máquina central y ejecutamos el comando:![ssh-keygen](https://blog.deiser.com/hs-fs/hubfs/Ansible/ssh-keygen.png?width=1785&name=ssh-keygen.png)

## Una vez finalizado el proceso de generación disponemos de 2 ficheros: ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub . Copiamos la llave pública al nodo:![llave pública](https://blog.deiser.com/hs-fs/hubfs/Ansible/llave%20p%C3%BAblica.png?width=1785&name=llave%20p%C3%BAblica.png)

Ahora podemos iniciar una sesión SSH con el usuario root al nodo sin necesidad de una contraseña.  
Ya disponemos de todo lo necesario para ejecutar nuestro primer comando desde la máquina central.![ansible all root](https://blog.deiser.com/hs-fs/hubfs/Ansible/ansible%20all%20root.png?width=1785&name=ansible%20all%20root.png)

Si todo ha ido bien, deberíamos poder obtener un mensaje similar a:![mensaje de éxito](https://blog.deiser.com/hs-fs/hubfs/Ansible/mensaje%20de%20%C3%A9xito.png?width=1785&name=mensaje%20de%20%C3%A9xito.png)

Si ejecutamos el mismo comando quitando el parámetro -u root``nos encontraríamos con el error:![mensaje SSH unkown error](https://blog.deiser.com/hs-fs/hubfs/Ansible/mensaje%20SSH%20unkown%20error.png?width=1814&name=mensaje%20SSH%20unkown%20error.png)

Debido a que la conexión la hemos establecido para el usuario root y en caso de no especificar usuarios, Ansible va a utilizar el usuario actual.

## Playbook

Los playbooks básicamente nos permiten gestionar la configuración del despliegue que vamos a realizar en los nodos. En ellos describimos la configuración, pero también nos permiten orquestar una serie de pasos o tareas a seguir.

El Playbook se escribe utilizando [YAML](https://docs.ansible.com/YAMLSyntax.html). Por ejemplo:![hosts tasks handlers](https://blog.deiser.com/hs-fs/hubfs/Ansible/hosts%20tasks%20handlers.png?width=1812&name=hosts%20tasks%20handlers.png)

Veamos la composición del ejemplo:

## Hosts and User

Para cada tarea se puede especificar el grupo de nodos objetivo y el usuario remoto que ejecutará cada operación.![hosts webservers remote_user root](https://blog.deiser.com/hs-fs/hubfs/Ansible/hosts%20webservers%20remote_user%20root.png?width=1813&name=hosts%20webservers%20remote_user%20root.png)

Para cada tarea se puede especificar el grupo de nodos objetivo y el usuario remoto que ejecutará cada operación.![especificar usuarios remote_user root](https://blog.deiser.com/hs-fs/hubfs/Ansible/especificar%20usuarios%20remote_user%20root.png?width=1813&name=especificar%20usuarios%20remote_user%20root.png)

En caso de requerir distintos usuarios por tarea se puede especificar de la siguiente forma:

'sudo' está soportado![sudo yes](https://blog.deiser.com/hs-fs/hubfs/Ansible/sudo%20yes.png?width=1815&name=sudo%20yes.png)

## Tasks

Las tareas son ejecutadas en orden, una a la vez, contra los nodos descritos en la sección hosts. Es importante destacar que si algún nodo falla en la ejecución de la tarea, este será sacado de la lista.

El objetivo de cada tarea es ejecutar un módulo. Los módulos sólo se ejecutarán cuando tengan algo que modificar. Si ejecutamos el Playbook una y otra vez, podemos estar seguros de que sólo cuando haya algo que modificar el módulo será ejecutado.

Los módulos command y shell sí serán ejecutados continuamente. Afortunadamente contamos con un check llamado creates que indicará que sólo debe ejecutarse si hay algo que modificar en la tarea.

Cada tarea debe contar con un 'name'que será incluido en la traza de salida de la operación. Por ejemplo:![task name make sure apache is running](https://blog.deiser.com/hs-fs/hubfs/Ansible/task%20name%20make%20sure%20apache%20is%20running.png?width=1814&name=task%20name%20make%20sure%20apache%20is%20running.png)

'notify' son las acciones que se ejecutarán al final de cada tarea en el Playbook. Sólo serán ejecutadas una vez, incluso cuando sean llamadas por diferentes tareas. Por ejemplo: muchas tareas pueden solicitar el reinicio de algún servicio específico, pero este sólo será reiniciado una sola vez.![notify restart apache](https://blog.deiser.com/hs-fs/hubfs/Ansible/notify%20restart%20apache.png?width=1814&name=notify%20restart%20apache.png)

## Ejecución de un Playbook

Para ejecutar un Playbook desde la máquina central ejecutamos el comando:![ansible-playbook playbook yml](https://blog.deiser.com/hs-fs/hubfs/Ansible/ansible-playbook%20playbook%20yml.png?width=1813&name=ansible-playbook%20playbook%20yml.png)

## Demo

Para la demo vamos a crear un Playbook llamado webserver.yml, con el que vamos a instalar las herramientas necesarias para publicar una página web. Lo primero que hacemos es crear nuestro Playbook en la máquina central con el siguiente contenido:![instalacion de paquetes php5 apache2 mysql server client](https://blog.deiser.com/hs-fs/hubfs/Ansible/instalacion%20de%20paquetes%20php5%20apache2%20mysql%20server%20client.png?width=1809&name=instalacion%20de%20paquetes%20php5%20apache2%20mysql%20server%20client.png)

Básicamente indicamos que la primera tarea a ejecutarse es la instalación de las aplicaciones necesarias: php5, apache2, mysql, etc...

En la segunda tarea vamos a ejecutar un comando que habilita el módulo rewrite de nuestro Apache.

Por último reiniciamos el servicio del Apache.

El Playbook se va a ejecutar en todos los nodos que pertenezcan al grupo webservice declarado previamente en el fichero /etc/ansible/hosts. En nuestro caso es el nodo con la IP 192.168.101.104.

Vamos a ejecutar el Playbook utilizando el comando:![ansible-playbook webserver yml](https://blog.deiser.com/hs-fs/hubfs/Ansible/ansible-playbook%20webserver%20yml.png?width=1814&name=ansible-playbook%20webserver%20yml.png)

Una vez finalizado obtendremos un mensaje similar a:![play webserver gathering facts](https://blog.deiser.com/hs-fs/hubfs/Ansible/play%20webserver%20gathering%20facts.png?width=1809&name=play%20webserver%20gathering%20facts.png)

Podemos observar cómo al final se describe el resultado de la operación. Ok=4 y failed=0. Esto indica que todo se ha realizado sin ningún problema.

Así concluye esta pequeña guía sobre los primeros pasos con Ansible.

¿Qué te ha parecido? Espero que te haya servido para aclarar dudas y conceptos básicos sobre la herramienta.

- [Tweet](https://twitter.com/share)

![Haz upgrade de versión de Jira](https://blog.deiser.com/hs-fs/hubfs/SPANISH/CAMPAIGNS/Actualizando%20Jira%20-%20Por%20que%20como%20y%20cuando%20/Post/CTA_Actualizar-Jira_DEISER_ES.png?width=900&name=CTA_Actualizar-Jira_DEISER_ES.png "Haz upgrade de versión de Jira")

### Guía de actualizaciones de Jira

¿Estás pensando actualizar tu instancia de Jira? ¿Has tenido en cuenta todas las posibles complicaciones? ¿Tienes miedo de no poder hacer la actualización de una vez?

Descárgate esta guía y planifica tu proyecto:

[![DESCARGAR GUÍA](https://hubspot-no-cache-eu1-prod.s3.amazonaws.com/cta/default/3363011/aedc2874-20d7-4e04-ba06-e2f6809dc97c.png)](https://hubspot-cta-redirect-eu1-prod.s3.amazonaws.com/cta/redirect/3363011/aedc2874-20d7-4e04-ba06-e2f6809dc97c)

[** ](https://blog.deiser.com/es)

Next Story

[¿Cómo gestionamos la Bolsa de horas? Un servicio especializado →](https://blog.deiser.com/es/como-gestionar-bolsas-de-horas-con-jira-profields-y-scriptrunner)

## You May Also Like

These Stories on Gestión de servicios de TI

[![](https://blog.deiser.com/hubfs/ES/Blog/Post/Customer%20Service%20Management,%20impulsando%20la%20atenci%C3%B3n%20al%20cliente/Customer-Service-Management-blogpost-cover-Deiser.jpg) ](https://blog.deiser.com/es/customer-service-management-gestion-de-la-atencion-al-cliente)

[Gestión de servicios de TI](https://blog.deiser.com/es/tag/gestión-de-servicios-de-ti)

### [Customer Service Management: impulsa la atención al cliente personalizada](https://blog.deiser.com/es/customer-service-management-gestion-de-la-atencion-al-cliente)

 20-nov-2025 10:04:03 |

 6 min read

[![](https://blog.deiser.com/hubfs/ES/Blog/Post/El%20futuro%20de%20la%20gesti%C3%B3n%20de%20servicios%20con%20IA/Post_Futuro_SM_con_IA_1125x2000.png) ](https://blog.deiser.com/es/el-futuro-de-la-gestion-de-servicios-y-la-ia-una-guia-para-empezar)

[Jira Service Management](https://blog.deiser.com/es/tag/jira-service-management)

### [El futuro de la gestión de servicios con Inteligencia Artificial](https://blog.deiser.com/es/el-futuro-de-la-gestion-de-servicios-y-la-ia-una-guia-para-empezar)

 21-ago-2025 14:23:20 |

 5 min read

[![](https://blog.deiser.com/hubfs/ES/Blog/Post/Atlassian%20Talent/Atlassian_talent_blogpost_cover.jpg) ](https://blog.deiser.com/es/atlassian-talent-el-conector-para-personas-procesos-y-objetivos)

[Gestión de servicios de TI](https://blog.deiser.com/es/tag/gestión-de-servicios-de-ti)

### [Atlassian Talent: el conector para personas, procesos y objetivos](https://blog.deiser.com/es/atlassian-talent-el-conector-para-personas-procesos-y-objetivos)

 31-jul-2025 9:18:12 |

 5 min read

## Comments (4)

### Subscribe by Email

[![Deiser | Tu partner en transformación digital](https://blog.deiser.com/hubfs/ES/Devoteam/Deiser_Part_of_Devoteam_RGB_Full_logo_white-1.svg "Deiser | Tu partner en transformación digital")](https://www.deiser.com/es)

Tu partner en transformación digital

[Hablemos](https://www.deiser.com/es/contacto?hsCtaTracking=4ec7f597-e35e-4042-8c62-fd2469ec8dda%7C56066edf-54b3-40f1-b362-498defa4ccc6)

Calle Pedro Muñoz Seca 2, 6ª Planta.  
28001 - Madrid | SPAIN   
[+34 912 824 700](tel:+34%20912824700)   
[info@deiser.com](mailto:info@deiser.com)

<https://www.youtube.com/user/DEISERCHANNEL/videos><https://www.facebook.com/156907871048762><https://www.instagram.com/deiserteam><https://www.linkedin.com/company/398203><https://twitter.com/deiser>

[Política de cookies](https://www.deiser.com/es/politica-de-cookies) | [Política de privacidad](https://www.deiser.com/es/politica-de-privacidad) | [Aviso legal](https://www.deiser.com/es/aviso-legal) | [Seguridad de la información](https://www.deiser.com/es/seguridad-de-la-informacion) | [Canal de denuncias](https://deiser.bizneohr.com/whistleblowing-channel) | [Mapa del sitio](https://www.deiser.com/es/mapa-del-sitio)

![](https://px.ads.linkedin.com/collect/?pid=2244641&fmt=gif) ![](https://px.ads.linkedin.com/collect/?pid=2244641&fmt=gif)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Carlos Aparicio",
    "url" : "https://blog.deiser.com/es/author/carlos-aparicio"
  },
  "dateModified" : "2024-03-19T08:26:01.814Z",
  "datePublished" : "2015-01-13T09:40:00.000Z",
  "headline" : "Primeros pasos con Ansible",
  "image" : [ "https://blog.deiser.com/hubfs/Portada_Post_11.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blog.deiser.com/es/primeros-pasos-con-ansible",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blog.deiser.com/hubfs/ES/Devoteam/Deiser_Part_of_Devoteam_RGB_Full_logo_colour-1.svg"
    },
    "name" : "Deiser"
  }
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "Organization",
  "description" : "Deiser Part of Devoteam helps you transform digitally, optimizing processes and team collaboration with tailored Atlassian solutions and ongoing support.",
  "logo" : "https://www.deiser.com/hubfs/deiser-logo.png",
  "name" : "Deiser",
  "sameAs" : [ "https://www.linkedin.com/company/deiser", "https://twitter.com/deiser" ],
  "url" : "https://www.deiser.com"
}
```