Esta es el arreglo más exacta que encomtrarás aportar, pero estúdiala pausadamente y valora si es compatible a tu trabajo.
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.