Esta sección le muestra cómo expandir y refinar los métodos de conexión que Ansible usa para su inventario.

ControlPersist y paramiko

De forma predeterminada, Ansible usa OpenSSH nativo, porque es compatible con ControlPersist (una función de rendimiento), Kerberos y opciones en ~/.ssh/config como la configuración de Jump Host. Si su máquina de control usa una versión anterior de OpenSSH que no es compatible con ControlPersist, Ansible recurrirá a una implementación de Python de OpenSSH llamada ‘paramiko’.

Configurar un usuario remoto

De forma predeterminada, Ansible se conecta a todos los dispositivos remotos con el nombre de usuario que está utilizando en el nodo de control. Si ese nombre de usuario no existe en un dispositivo remoto, puede establecer un nombre de usuario diferente para la conexión. Si solo necesita realizar algunas tareas como un usuario diferente, consulte Comprender la escalada de privilegios: conviértase. Puede configurar el usuario de conexión en un libro de jugadas:

----name: update webservers
  hosts: webservers
  remote_user: admin

  tasks:-name: thing to do first in this playbook
  . . .

como variable del lenguaje principal en el inventario:

other1.example.com     ansible_connection=ssh        ansible_user=myuser
other2.example.com     ansible_connection=ssh        ansible_user=myotheruser

o como variable de grupo en el inventario:

cloud:hosts:cloud1: my_backup.cloud.com
    cloud2: my_backup2.cloud.com
  vars:ansible_user: admin

Configurar SSH keys

De forma predeterminada, Ansible asume que estás usando SSH keys para conectarse a máquinas remotas. SSH keys se recomienda, pero puede utilizar la autenticación de contraseña si es necesario con el --ask-pass opción. Si necesita proporcionar una contraseña para escalada de privilegios (sudo, pbrun, etc.), use --ask-become-pass.

Nota

Ansible no expone un canal para permitir la comunicación entre el usuario y el proceso ssh para aceptar una contraseña manualmente para descifrar un ssh key cuando se utiliza el complemento de conexión ssh (que es el predeterminado). El uso de ssh-agent es muy recomendable.

Para configurar el agente SSH para evitar tener que volver a escribir las contraseñas, puede hacer lo siguiente:

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa

Dependiendo de su configuración, es posible que desee utilizar Ansible --private-key opción de línea de comando para especificar un archivo pem en su lugar. También puede agregar el privado key Archivo:

$ ssh-agent bash
$ ssh-add ~/.ssh/keypair.pem

Otra forma de agregar privado key archivos sin usar ssh-agent está usando ansible_ssh_private_key_file en un archivo de inventario como se explica aquí: Cómo construir su inventario.

Ejecutando contra localhost

Puede ejecutar comandos en el nodo de control utilizando “localhost” o “127.0.0.1” para el nombre del servidor:

$ ansible localhost -m ping -e 'ansible_python_interpreter="/usr/bin/env python"'

Puede especificar localhost explícitamente agregando esto a su archivo de inventario:

localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"

Gestión de host key comprobación

Ansible habilita el host key comprobando por defecto. Comprobando host keys protege contra la suplantación de identidad del servidor y los ataques man-in-the-middle, pero requiere cierto mantenimiento.

Si se reinstala un host y tiene un key en ‘hosts_conocidos’, esto resultará en un mensaje de error hasta que se corrija. Si un nuevo host no está en ‘known_hosts’, su nodo de control puede solicitar la confirmación del key, lo que resulta en una experiencia interactiva si usa Ansible, por ejemplo, cron. Puede que no quieras esto.

Si comprende las implicaciones y desea deshabilitar este comportamiento, puede hacerlo editando /etc/ansible/ansible.cfg o ~/.ansible.cfg:

[defaults]
host_key_checking = False

Alternativamente, esto puede ser configurado por el ANSIBLE_HOST_KEY_CHECKING Variable ambiental:

$ exportANSIBLE_HOST_KEY_CHECKING=False

También tenga en cuenta que el anfitrión key comprobar en el modo paramiko es razonablemente lento, por lo que también se recomienda cambiar a ‘ssh’ cuando se utiliza esta función.

Otros métodos de conexión

Ansible puede usar una variedad de métodos de conexión más allá de SSH. Puede seleccionar cualquier complemento de conexión, incluida la administración de cosas localmente y la administración de contenedores chroot, lxc y jail. Un modo llamado ‘ansible-pull’ también puede invertir el sistema y hacer que los sistemas ‘llamen a casa’ mediante comprobaciones de git programadas para extraer directivas de configuración de un repositorio central.