Saltar al contenido

Cómo instalar y configurar Ansible en Ubuntu 18.04

marzo 4, 2020

 sistemas de gestión de configuración Introducción

están diseñados para agilizar el proceso de controlar un gran número de servidores, para los administradores y equipos de operaciones. Ellos le permiten controlar muchos sistemas diferentes de forma automatizada desde una ubicación central.

Si bien hay muchas herramientas de gestión de configuración populares disponibles para los sistemas Linux, como chef y de marionetas, estos a menudo son más complejos que mucha gente quiere o necesita. Ansible es una gran alternativa a estas opciones, ya que ofrece una arquitectura sencilla que no requiere software especial para ser instalado en los nodos, utilizando SSH para ejecutar las tareas de automatización y archivos YAML para definir detalles de aprovisionamiento.

En esta guía, vamos a discutir cómo instalar Ansible en un servidor de Ubuntu 18.04 y repasar algunos conceptos básicos de cómo utilizar este software.

¿Cómo funciona el Ansible?

Ansible funciona mediante la configuración de las máquinas cliente, conocidos como anfitriones Ansible , desde un equipo que tiene los componentes Ansible instalados y configurados, que luego se llamó el nodo controlador de Ansible .

Se comunica canales SSH más normales para recuperar información de los sistemas remotos, ejecutar comandos y copiar archivos. Debido a esto, un sistema Ansible no requiere ningún software adicional para ser instalado en los equipos cliente.

Esta es una manera de que Ansible simplifica la administración de servidores. Cualquier servidor que tiene un puerto SSH expuesta puede ser llevado bajo el paraguas de configuración de Ansible, independientemente de qué etapa se encuentra en su ciclo de vida. Esto significa que cualquier equipo que puede administrar a través de SSH, también se puede administrar a través Ansible.

Ansible adquiere un enfoque modular, por lo que es fácil de extender para utilizar las funcionalidades del sistema principal para hacer frente a situaciones específicas. Los módulos pueden ser escritos en cualquier idioma y se comunican en JSON estándar. Los archivos de configuración

se escriben principalmente en el formato de serialización de datos YAML debido a su naturaleza expresiva y su similitud con los lenguajes de marcas populares. Ansible puede interactuar con los anfitriones ya sea a través de herramientas de línea de comando o de sus secuencias de comandos de configuración, que se conocen como libros de jugadas.

Requisitos previos

Para seguir este tutorial, necesitará:

  • Una Ansible Nodo de Control: Un nodo de control de la máquina es Ansible vamos a utilizar para conectar y controlar que los ejércitos Ansible a través de SSH. El nodo de control Ansible puede ser su máquina local o un servidor dedicado a ejecutar Ansible, aunque esta guía asume que el nodo de control es un sistema Ubuntu 18.04. Asegúrese de que el nodo de control tiene: un usuario no root con privilegios sudo. Para hacer esto, puede seguir los pasos 2 y 3 de nuestra configuración inicial del servidor Guía para Ubuntu 18.04. Sin embargo, tenga en cuenta que si usted está usando un servidor remoto como su nodo de control Ansible, debe seguir todos los pasos de esta guía. Si lo hace, configurar un servidor de seguridad en el servidor con UFW y permitir el acceso externo a su perfil de usuario no root, los cuales ayudarán a mantener el servidor remoto SSH secure.An par de claves asociados con este usuario. Para hacer esto, puede seguir el paso 1 de nuestra guía sobre cómo configurar las claves SSH en Ubuntu 18.04.
  • Un usuario no root con privilegios sudo. Para hacer esto, puede seguir los pasos 2 y 3 de nuestra configuración inicial del servidor Guía para Ubuntu 18.04. Sin embargo, tenga en cuenta que si usted está usando un servidor remoto como su nodo de control Ansible, debe seguir todos los pasos de esta guía. Si lo hace, configurar un servidor de seguridad en el servidor con UFW y permitir el acceso externo a su perfil de usuario no root, los cuales ayudarán a mantener el servidor remoto seguro.
  • Un SSH par de claves asociado con este usuario. Para hacer esto, puede seguir el paso 1 de nuestra guía sobre cómo configurar las claves SSH en Ubuntu 18.04.
  • Uno o más hosts Ansible: Un anfitrión Ansible es cualquier máquina que el nodo de control Ansible está configurado para automatizar. Esta guía asume sus anfitriones Ansible son remotas Ubuntu 18.04 servidores. Asegúrese de que cada host tiene Ansible: clave pública SSH del nodo de control Ansible añadido a los authorized_keys de un usuario del sistema. Este usuario puede ser root o un usuario regular con privilegios sudo. Para hacer esto, puede seguir el paso 2 de cómo configurar las claves SSH en Ubuntu 18.04. clave pública SSH del nodo de control
  • El Ansible añadido a los authorized_keys de un usuario del sistema. Este usuario puede ser root o un usuario regular con privilegios sudo. Para hacer esto, puede seguir el paso 2 de cómo configurar las claves SSH en Ubuntu 18.04.

Una Ansible control de nodos : Un nodo de control de la máquina es Ansible vamos a utilizar para conectar y controlar que los ejércitos Ansible a través de SSH. El nodo de control Ansible puede ser su máquina local o un servidor dedicado a ejecutar Ansible, aunque esta guía asume que el nodo de control es un sistema Ubuntu 18.04. Asegúrese de que el nodo de control tiene:

  • Un usuario no root con privilegios sudo. Para hacer esto, puede seguir los pasos 2 y 3 de nuestra configuración inicial del servidor Guía para Ubuntu 18.04. Sin embargo, tenga en cuenta que si usted está usando un servidor remoto como su nodo de control Ansible, debe seguir todos los pasos de esta guía. Si lo hace, configurar un servidor de seguridad en el servidor con UFW y permitir el acceso externo a su perfil de usuario no root, los cuales ayudarán a mantener el servidor remoto seguro.
  • Un SSH par de claves asociado con este usuario. Para hacer esto, puede seguir el paso 1 de nuestra guía sobre cómo configurar las claves SSH en Ubuntu 18.04.

Uno o más hosts Ansible : Un anfitrión Ansible es cualquier máquina que el nodo de control Ansible está configurado para automatizar. Esta guía asume sus anfitriones Ansible son remotas Ubuntu 18.04 servidores. Asegúrese de que cada host tiene Ansible: clave pública SSH del nodo de control

  • El Ansible añadido a los authorized_keys de un usuario del sistema. Este usuario puede ser root o un usuario regular con privilegios sudo. Para hacer esto, puede seguir el paso 2 de cómo configurar las claves SSH en Ubuntu 18.04.

Paso 1 – Instalación de Ansible

Para comenzar a utilizar Ansible como un medio de la gestión de su infraestructura de servidores, es necesario instalar el software en la máquina Ansible que servirá como el nodo de control Ansible.

Desde el nodo de control, ejecute el siguiente comando para incluir PPA del proyecto oficial (archivo de paquete personal) en la lista de su sistema de fuentes:

sudo apt-add-repository ppa:ansible/ansible

  • sudo ppa add-apt-repositorio: ansible / ansible

Pulse ENTER cuando solicite aceptar la adición PPA.

A continuación, actualizar el índice de paquetes del sistema para que sea consciente de los paquetes disponibles en el PPA recién incluidos:

sudo apt update

  • sudo update apt

Después de esta actualización, puede instalar el software Ansible con:

sudo apt install ansible

  • sudo apt instalar ansible

Su nodo de control ansible ahora con todo el software necesario para administrar sus anfitriones. A continuación, vamos a ir sobre cómo agregar sus anfitriones al archivo de inventario del nodo de control de forma que pueda controlarlos.

Paso 2 – Configuración del archivo de inventario archivo de inventario

El contiene información sobre los anfitriones Podrá administrar con Ansible. Puede incluir cualquier lugar de uno a varios cientos de servidores de archivo de inventario , y los anfitriones se pueden organizar en grupos y subgrupos. El archivo de inventario también se utiliza a menudo para las variables de ajuste que será válido sólo para los ejércitos o grupos específicos, con el fin de ser utilizado dentro de jugadas y plantillas. Algunas variables también pueden afectar la forma en que se ejecuta un libro de jugadas, al igual que la variable ansible_python_interpreter que veremos en un momento.

para editar el contenido de su inventario Ansible predeterminado, abra el archivo / ansibles / hosts / etc usando el editor de línea de comandos de elección, en el equipo local o un Ansible Nodo de Control:

sudo nano /etc/ansible/hosts

  • sudo nano / etc / ansible / hosts

Nota : algunas instalaciones ansible no crearán un archivo de inventario predeterminado. Si el archivo no existe en el sistema, se puede crear un nuevo archivo en / etc / ansibles / hosts o proporcionar una ruta de inventario personalizado con el parámetro -i cuando se ejecutan comandos y libros de jugadas.

El archivo de inventario predeterminada proporcionada por la instalación Ansible contiene una serie de ejemplos que se pueden utilizar como referencia para la creación de su inventario. El ejemplo siguiente define un grupo denominado [servidores] con tres servidores diferentes en el mismo, cada uno identificado por un alias de encargo: server1 , server2 , y server3 . Asegúrese de reemplazar las IPs resaltados con las direcciones IP de sus anfitriones Ansible.

[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[servers:vars]
ansible_python_interpreter=/usr/bin/python3

El servidor: vars conjuntos subgrupo el parámetro host ansible_python_interpreter que será válido para todos los hosts incluidos en el grupo de servidores. Este parámetro permite que el servidor remoto utiliza el / usr / bin / python3 Python 3 ejecutable en lugar de / usr / bin / pitón (Python 2.7), que no está presente en las versiones recientes de Ubuntu.

Cuando haya terminado, guarde y cierre el archivo presionando CTRL + X entonces Y a los cambios confirmar y luego ENTER.

Cada vez que desee comprobar su inventario, puede ejecutar:

ansible-inventory --list -y

  • ansible-inventario –list -y

Usted verá una salida similar a esta, pero que contiene su propia infraestructura de servidor como se define en el archivo de inventario :

Outputall:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}

Ahora que ha configurado el archivo de inventario, usted tiene todo lo necesario para probar la conexión con sus anfitriones ansible.

Paso 3 – Conexión Prueba

Después de configurar el archivo de inventario para incluir sus servidores, es el momento de comprobar si Ansible es capaz de conectarse a estos servidores y ejecutar comandos a través de SSH.

Para esta guía, vamos a utilizar la cuenta raíz Ubuntu porque eso es normalmente la única cuenta disponible de forma predeterminada en los servidores de nueva creación. Si los hosts Ansible ya tienen un usuario regular sudo creado, se le anima a utilizar esa cuenta su lugar.

Usted puede utilizar el argumento -u para especificar el usuario del sistema remoto. Cuando no se proporciona, Ansible intentará conectarse como usuario actual del sistema en el nodo de control.

de su máquina local o nodo de control Ansible, ejecute:

ansible all -m ping -u root

  • Ansible todo -m de ping-u root

Este comando va a utilizar de Ansible módulo incorporado ping para ejecutar una prueba de conectividad en todos los nodos de su inventario por defecto , que conecta como root . El módulo de ping pondrá a prueba:

  • si anfitriones son accesibles;
  • si dispone de credenciales SSH válidos;
  • si anfitriones son capaces de ejecutar módulos Ansible utilizando Python.

Debería obtener una salida similar a la siguiente:

Outputserver1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}

Si esta es la primera vez que se conecta a estos servidores a través de SSH, se le pedirá que confirme la autenticidad de los anfitriones se conecta a través de Ansible. Cuando se le solicite, escriba sí y luego pulsa ENTER para confirmar.

Una vez que se obtiene un «pong» de contestar de nuevo a partir de un anfitrión, que significa que está listo para ejecutar comandos Ansible y libros de jugadas en ese servidor.

Nota : Si no puede obtener una copia de la respuesta exitosa de los servidores, consulte nuestra guía de hojas Ansible de trucos para obtener más información sobre cómo ejecutar comandos Ansible con diferentes opciones de conexión.

Paso 4 – Ejecución de comandos Ad-Hoc (Opcional)

Después de confirmar que el nodo de control Ansible es capaz de comunicarse con sus anfitriones, puede iniciar la ejecución de comandos y libros de jugadas ad-hoc en sus servidores.

Cualquier comando que normalmente se ejecuta en un servidor remoto a través de SSH se puede ejecutar con Ansible en los servidores especificados en el archivo de inventario. A modo de ejemplo, se puede comprobar el uso del disco en todos los servidores con:

ansible all -a "df -h" -u root

  • Ansible todo -a «df -h» raíz -u

Output
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0

server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0

...

El comando df -h resaltado puede ser sustituido por cualquier comando desea .

También se puede ejecutar a través de Ansible módulos ad hoc comandos, de manera similar a lo que hemos hecho antes con el módulo de ping para probar la conexión. Por ejemplo, aquí es cómo podemos utilizar el módulo apto para instalar la última versión de vim en todos los servidores en su inventario:

ansible all -m apt -a "name=vim state=latest" -u root

  • Ansible todo -a -m apto «name = = vim estado más reciente» u root

también puede dirigirse a los hosts individuales, así como grupos y subgrupos, cuando se ejecutan comandos ansible. Por ejemplo, se trata de cómo se compruebe el tiempo de funcionamiento de cada host en el grupo de servidores:

ansible servers -a "uptime" -u root

  • servidores ansibles -a «tiempo de actividad» raíz -u

Nos pueden especificar varios hosts separándolas con dos puntos:

ansible server1:server2 -m ping -u root

  • ansible server1: servidor2 -m de ping-u root

para obtener más información sobre cómo utilizar ansible, incluyendo la forma de ejecutar jugadas para automatizar la configuración del servidor, puede comprobar nuestra Guía de Referencia ansible.

Conclusión

En esta guía, usted ha instalado Ansible y configurar un archivo de inventario para ejecutar comandos ad-hoc de un Nodo de Control Ansible.

Una vez que haya confirmado que es capaz de conectar y controlar su infraestructura de una máquina del controlador Ansible central, se puede ejecutar cualquier comando o libro de jugadas que desee en estos equipos. Para los servidores frescas, el libro de jugadas inicial de configuración del servidor de la comunidad es un buen punto de partida. También puede aprender cómo escribir sus propios libros de jugadas con nuestra guía de gestión de la configuración 101: Escritura Ansible libros de jugadas.

Para obtener más información sobre cómo utilizar Ansible, visita nuestra hoja de trucos Ansible Guía.