ansible 2.0.0.2
config file =
configured module search path = Default w/o overrides
Sin cambios
OS X El Capitan Versión 10.11.3
Puedo conectarme a mi Rasberry Pi a través de ssh a través de un cable ethernet a través de "ssh [email protected] " pero la ejecución de Ansible con esta dirección IP como host falla.
He configurado con éxito esta Rasberry Pi con ansible a través de wifi (usando la dirección IP de wifi), pero ahora intento usar ansible a través de la conexión directa de ethernet, aparece el mensaje de error críptico:
`TASK [setup] *******************************************************************
fatal: [169.254.0.2]: UNREACHABLE! => {"changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true}`
Debido a que _puedo_ conectarme con éxito a este pi usando esa dirección IP a través de ssh desde la terminal, estoy planteando que esto es un error en Ansible.
Ejecuto este comando para ejecutar el rol
ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo -c paramiko -vvvv
También lo intenté
ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo -vvvv
que conducen al mismo error.
archivo hosts
[pis]
169.254.0.2
libro de jugadas
---
- name: Ansible Playbook for configuring brand new Raspberry Pi
hosts: pis
roles:
- pi
remote_user: pi
sudo: yes
Supongo que el rol no es realmente importante porque ansible está fallando en el paso de conexión ssh.
Espero que ansible se conecte a pi y ejecute el rol (lo hice con éxito al conectarme a través de una dirección IP a través de wifi)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getpass.py:83: GetPassWarning: Can not control echo on the terminal.
No config file found; using defaults
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
SSH password: raspberry
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and
make sure become_method is 'sudo' (default). This feature will be removed in a
future release. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
Loaded callback default of type stdout, v2.0
1 plays in ansible-pi/playbook.yml
PLAY [Ansible Playbook for configuring brand new Raspberry Pi] *****************
TASK [setup] *******************************************************************
<169.254.0.2> ESTABLISH CONNECTION FOR USER: pi on PORT 22 TO 169.254.0.2
CONNECTION: pid 2118 waiting for lock on 10
CONNECTION: pid 2118 acquired lock on 10
fatal: [169.254.0.2]: UNREACHABLE! => {"changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true}
PLAY RECAP *********************************************************************
169.254.0.2 : ok=0 changed=0 unreachable=1 failed=0
¡Hola!
Muchas gracias por su envío a Ansible. Sinceramente, significa mucho para nosotros.
Tenemos algunas preguntas que nos gustaría conocer antes de que podamos poner esta solicitud en cola. Si puede ayudar a responderlas, se lo agradeceríamos enormemente:
Solo como un recordatorio rápido de las cosas, este es un proyecto muy ocupado. Tenemos más de 800 colaboradores y gestionamos la cola de forma eficaz
asignamos a las cosas una prioridad entre P1 (la más alta) y P5. ¡Nos gustaría agradecerle mucho por su tiempo!
Trabajaremos las cosas en orden de prioridad, así que solo quería que estuvieras al tanto de la cola y supieras que no nos hemos olvidado de ti.
Definitivamente veremos sus comentarios sobre este tema al leer este ticket, pero es posible que no podamos responder de inmediato. También es posible que desee unirse a una de nuestras dos listas de correo.
que son muy activos:
¡Gracias una vez más por esto y su interés en Ansible!
@mhfowler : pude evitar esto proporcionando ansible_password
en mi inventario
ansible_password
también me funcionó
[testServer]
192.168.33.10
[testServer:vars]
ansible_password=vagrant
Esto sucedió de repente cuando actualicé Ansible.
Para ejecutar con éxito tuve que:
ansible-playbook --limit grunndata playbook.yml -c paramiko -u deploy
Antes solo he corrido
ansible-playbook --limit grunndata playbook.yml
SSH normal con lo siguiente funciona sin problemas:
ssh deploy<strong i="13">@grunndata</strong>
Algo ha cambiado.
¿Qué información puedo proporcionar para ayudar a depurar esto?
Estoy ejecutando lo siguiente:
+1
necesitaba agregar -c paramiko porque uno de los 5 hosts estaba fallando, y pude ingresar a todos ellos con éxito.
Para mí, tenía una entrada .ssh / config para que mi usuario coincidiera con el nombre de host remoto.
Host servername
User username
Podría SSH directamente al servidor con ssh servername
Sin embargo, con Ansible, necesitaba agregar el parámetro -u
al comando de implementación:
ansible-playbook -vvvv -i poc book_deploy.yml --ask-vault-pass --ask-become-pass -u username
Después de eso, podría implementarse bien.
Un poco extraño que no usó el archivo .ssh / config como anteriormente, pero la solución funciona, gracias :)
Se solicitó el cierre de
haga clic aquí para obtener ayuda con el bot
¿Por qué esto? Estaba tan feliz haciendo ansible -m ping todo lo que necesito hacer -u usuario -c paramiko
@roolo También configuré 'ansible_password' y comenzó a funcionar para mí. ¿Para qué es esto? Puede configurarlo literalmente como desee y funcionará ahora.
El mismo problema con ansible 2.1.2.0 y la opción --ask-pass.
OS X 10.11.6
La solución de ohallors no ayudó.
Estoy lejos de mi computadora por algunas semanas. Pls me envía un mensaje sobre esto después
3 de noviembre si no respondo solo. Gracias
Mismo.
$ ansible --version
ansible 2.2.0 (devel 6666d13654) last updated 2016/09/22 10:43:16 (GMT -700)
lib/ansible/modules/core: (detached HEAD 0f505378c3) last updated 2016/09/23 17:20:56 (GMT -700)
lib/ansible/modules/extras: (detached HEAD 935a3ab2cb) last updated 2016/09/23 17:20:56 (GMT -700)
El uso de -c paramiko parece funcionar mejor, parece que -c smart está roto .
En caso de que ayude a alguien, resolví este problema en Ubuntu 16.04 reemplazando esta línea en mi archivo de hosts ...
web1 ansible_ssh_host=my_remote_user<strong i="6">@my_ip</strong>
con
web1 ansible_ssh_host=my_ip
y luego asegurándome de haber agregado
remote_user=my_remote_user
a mi ansible.cfg
Para mí fue simplemente porque había agregado "my_remote_user @" delante de mi dirección IP. Esto había funcionado antes de actualizar.
Tuve el mismo problema y hacer ping al host primero resolvió el problema de alguna manera.
ansible <host> -i <inventory-file> -m ping
UPD: Tengo que ejecutar el comando ping casi todas las veces antes de ejecutar el libro de jugadas. Como después de un par de minutos de inactividad, el libro de jugadas vuelve a fallar.
@ cue232s Le dice a Ansible qué contraseña usar para la conexión ssh.
http://docs.ansible.com/ansible/intro_inventory.html#list -of-behavioral-Inventory-parameters (parece que el parámetro ahora se llama _ansible_ssh_pass_)
Resolví un problema similar en Mac OS X con ansible 2.1.2.0 que puede ayudar. No estoy seguro de dónde más publicarlo. Podría enviar una SSH a la instancia, pero ejecutar mi libro de jugadas resultó en:
fatal: [ec2-1-2-3-4.us-west-2.compute.amazonaws.com]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
Ninguna otra salida de error. Pero funcionó con -c paramiko
adjunto.
Bajé a ansible 1.9.4 ( pip install ansible==1.9.4
) y ahora, cuando lo ejecuto, aparece el error:
fatal: [ec2-1-2-3-4.us-west-2.compute.amazonaws.com] => SSH Error: unix_listener: "/Users/myname/.ansible/cp/ansible-ssh-ec2-1-2-3-4.us-west-2.compute.amazonaws.com-22-ubuntu.0o1S2DUmaWg7dLdF" too long for Unix domain socket
Así que actualicé de nuevo a 2.1.2.0 y agregué un archivo ansible.cfg
al directorio de mi proyecto con este contenido:
[ssh_connection]
control_path=%(directory)s/%%h-%%r
Y la conexión funcionó.
Estoy experimentando el mismo problema que https://github.com/ansible/ansible/issues/15321#issuecomment -256346976
ansible-playbook
no puede conectarse y no está creando el socket en ~/.ansible/cp
. Si ejecuto ansible -m ping
primero, se crea el socket y ansible-playbook
correctamente si ejecuto en 60 segundos.
Curiosamente, si ejecuto ansible-playbook
con la opción -vvv
y luego copio el comando ssh exacto que se muestra y lo ejecuto, la conexión se realiza correctamente y ansible-playbook
también lo hará.
Tengo el problema en ansible-2.1.2.0 instalado con Homebrew en macOS Sierra 10.12.1
La degradación a 2.1.1.0 elimina el problema para mí.
Tuve el mismo problema
Lo resolví agregando la clave utilizada para la autenticación en ssh-agent. La clave que usé fue sin contraseña.
Tener el mismo problema. El intento estándar de OpenSSH falla pero paramiko funciona.
Ejecutando Ansible dentro de Vagrant / Virtualbox en Windows para aprovisionar VM remotas. Ambas máquinas que ejecutan Ubuntu 16.04. Ansible versión 2.1.2.0 El archivo de configuración de Ansible se encuentra en /ansible/ansible.cfg.
línea hosts:
raw1 ansible_host=xx.xx.xx.xx ansible_port=22 ansible_user=root ansible_ssh_pass=wer32dw
Esto falla:
ubuntu<strong i="12">@devbox</strong>:/ansible$ sudo ansible raw1 -vvvv -m ping
Using /ansible/ansible.cfg as config file
Loaded callback minimal of type stdout, v2.0
<xx.xx.xx.xx> ESTABLISH SSH CONNECTION FOR USER: root
<66.23.245.125> SSH: EXEC sshpass -d12 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/home/ubuntu/.ansible/cp/ansible-ssh-%h-%p-%r 66.23.245.125 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1477987158.35-58855315932449 `" && echo ansible-tmp-1477987158.35-58855315932449="` echo $HOME/.ansible/tmp/ansible-tmp-1477987158.35-58855315932449 `" ) && sleep 0'"'"''
raw1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
Esto funciona:
ubuntu<strong i="16">@tgpdevbox</strong>:/ansible$ sudo ansible raw1 -vvvv -m ping -c paramiko
Using /ansible/ansible.cfg as config file
Loaded callback minimal of type stdout, v2.0
<xx.xx.xx.xx> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO xx.xx.xx.xx
<xx.xx.xx.xx> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806 `" && echo ansible-tmp-1477987431.74-236753198598806="` echo $HOME/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806 `" ) && sleep 0'
<xx.xx.xx.xx> PUT /tmp/tmp7oXJF4 TO /root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/ping
<xx.xx.xx.xx> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/ /root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/ping && sleep 0'
<xx.xx.xx.xx> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/ping; rm -rf "/root/.ansible/tmp/ansible-tmp-1477987431.74-236753198598806/" > /dev/null 2>&1 && sleep 0'
raw1 | SUCCESS => {
"changed": false,
"invocation": {
"module_args": {
"data": null
},
"module_name": "ping"
},
"ping": "pong"
}
## Solución: actualizado a Ansible 2.2.0.0 y ya no tengo que usar -c paramiko
¡Tuve este error, con el módulo cron
, y la actualización a ansible 2.2.0.0 se solucionó para mí también!
puedo conectarme a mi host como root pero no puedo ejecutar mi ansible
[root<strong i="6">@workstation</strong> svc_deployer]# ansible puppet.home.io -m ping --become-user=root --ask-sudo-pass
SUDO password:
puppet.home.io | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
[root<strong i="7">@workstation</strong> svc_deployer]# ssh puppet.home.io
[email protected]'s password:
Last login: Sun Nov 13 18:45:00 2016 from 192.168.56.160
[root<strong i="8">@puppet</strong> ~]#
intenté verboso
[root<strong i="12">@workstation</strong> svc_deployer]# sudo ansible puppet.home.io -m ping --become-user=root -c ssh -vvvv --become-method=sudo
Using /etc/ansible/ansible.cfg as config file
Loaded callback minimal of type stdout, v2.0
<puppet.home.io> ESTABLISH SSH CONNECTION FOR USER: None
<puppet.home.io> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r puppet.home.io '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1479092049.76-54149073209683 `" && echo ansible-tmp-1479092049.76-54149073209683="` echo $HOME/.ansible/tmp/ansible-tmp-1479092049.76-54149073209683 `" ) && sleep 0'"'"''
puppet.home.io | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
encontré la solución, ejecuté el siguiente comando en mi host para arreglar el permiso de la carpeta de la clave ssh (Centos6.6)
[root<strong i="6">@puppet</strong> ~]# restorecon -R -v /root/.ssh
restorecon reset /root/.ssh context unconfined_u:object_r:admin_home_t:s0->unconfined_u:object_r:ssh_home_t:s0
restorecon reset /root/.ssh/authorized_keys context unconfined_u:object_r:admin_home_t:s0->unconfined_u:object_r:ssh_home_t:s0
y fue capaz de ejecutar la configuración
[root<strong i="10">@workstation</strong> ~]# ansible puppet -m setup
puppet.home.io | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.168.56.170",
"192.168.1.89"
],
"ansible_all_ipv6_addresses": [
"fe80::a00:27ff:fe6a:41b1",
"2602:306:8b7f:37d0:a00:27ff:fea7:e797",
"fe80::a00:27ff:fea7:e797"
],
probé un par de combinaciones de ansible_host
nombres y descubrí que funciona con
foo.bar.com
XXX.XXX.XXX.XXX (ip addresses)
y que no funciona (sin especificar paramiko) con
foo-with-dashes.bar.com
foo.with.periods.AND.more.than.one.section.before.bar.com
Limitar los permisos de la clave ssh a 600 solucionó este problema.
Tener el mismo problema:
ansible 2.1.2.0
Ubuntu 14.04.5 x64
Error:
failed: [shshprod](item=shsh-api) => {"item": "shsh-api", "msg": "Failed to connect to the host via ssh.", "unreachable": true}
cuando intento hacer ansible-playbook -i Inventory.ini shsh.yml --key-file ssh / deploy
¿Es para permisos de clave ssh?
@ jimi-c ¿Por qué se ha vuelto a cerrar este problema?
Nuestro bot cerró automáticamente el problema debido a la falta de respuesta. Según varias de las respuestas anteriores, parece estar (al menos en algunos casos) relacionado con los permisos de las claves SSH (que siempre deberían ser 0600 para las claves privadas).
No parece ser un problema de permisos para mí, actualmente en ansible 2.1.2.0
Recupero el nombre DNS de la instancia ec2 que estoy intentando ansible. Vuelve con el formato: ec2 - # {dirección_ip} .ap-sureste-2.compute.amazonaws.com
Eso resulta en el error:
UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
Sin embargo, si uso la dirección IP para el servidor, se ejecuta sin problemas ... Parece mucho más cercano al problema que @marcstreeter ha encontrado
bot_skip
Tengo experiencia en este caso, ejecutando ansible 2.0.2.0
con un host de destino que ejecuta CentOS.
En mi escenario, tengo hosts
contienen detalles como ansible_host
ansible_user
y ansible_ssh_pass
Sin embargo, parece que el análisis de caracteres no parece admitir el "#" (es decir, el servidor 3 tiene una contraseña que contiene un "#" y esos 3 hosts han marcado el error).
Al ejecutar el libro de jugadas, me da un error:
PLAY [all] *********************************************************************
TASK [setup] *******************************************************************
<120.xxx.xxx.xxx> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO 120.xxx.xxx.xxx
fatal: [sz-server]: UNREACHABLE! => {"changed": false, "msg": "Authentication failed.", "unreachable": true}
Lo extraño es que el error indica específicamente que la autenticación falló. pero hacer una sesión SSH, funciona.
Verificando el registro secure
del servidor, muestra algo como:
<server> sshd[23642]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=<sz-server> user=root
<server> sshd[23642]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
<server> sshd[23642]: Failed password for root from <IP> port 61912 ssh2
Cambiar mi contraseña reemplazando "#" con un carácter especial diferente como "%" funciona.
Ahora, el libro de jugadas se ejecuta con éxito en todas las máquinas.
@ upbeta01 ese era un error antiguo, y pensé que lo habíamos solucionado hace un tiempo. Es posible que deba escapar del # para evitar que se considere el comienzo de un comentario
Gracias por info @ jimi-c, podría considerar actualizar mi ansible a la última versión estable. No estoy seguro de si 2.0.2.0
no han aplicado el parche para el error.
Estoy usando $ ansible --version 2.2.0.0, y el problema persiste ... con suerte encontré este hilo abierto ... tal vez podamos agregar una advertencia al usar Centos 7
Estoy usando ansible 2.2.0.0.
Este comando funciona porque no necesita permisos de sudo:
ansible -m command -a 'df -h' ca.o.prv
Pero este no:
ansible -s -m command -a 'fdisk -l' ca.o.prv
cas.o.prv | FAILED | rc=0 >>
MODULE FAILURE
Resuelto:
ansible all -s --ask-sudo-pass -m raw -a "fdisk -l"
@tyronzerafa y yo estamos viendo los mismos problemas que los anteriores. nuestro entorno es:
SO:
`` `$ cat / etc / redhat-release
Versión 6.8 de CentOS (final)
Ansible Version:
```$ ansible --version
ansible 2.2.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
Ping fallido:
`` `$ ansible tcfabrics -m ping
server3 | Inalcanzable! => {
"cambiado": falso,
"msg": "No se pudo conectar al host a través de ssh:",
"inalcanzable": verdadero
}
server1 | ÉXITO => {
"cambiado": falso,
"ping pong"
}
server2 | ÉXITO => {
"cambiado": falso,
"ping pong"
}
Successful ping:
```$ ansible tcfabrics -m ping -c paramiko
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
los hosts son aleatorios y cualquier libro de jugadas o comando que activamos, usando paramiko funciona, sin embargo, usar el predeterminado (¿inteligente?) falla al azar (sin embargo, nunca resulta en un 100% de éxito).
Si este problema es diferente, no dude en hacérnoslo saber y abriremos un problema por separado.
ssh los inalcanzables, para ver qué está pasando.
Si no tiene un archivo de claves configurado para el servidor, use el indicador -k
ansible -i hosts servers -m ping -u root -k
Extraje el comando ssh completo ejecutado por ansible-playbook agregando "-vvvv" a su línea de comandos y lo ejecuté manualmente. Imprimió esto al final:
unix_listener: "/home/saurav/.ansible/cp/ansible-ssh-very-long-aws-ec2-hostname-deploy.XXYY" demasiado largo para el socket de dominio Unix
Reemplazar el nombre de host de EC2 con su IP en el archivo de hosts lo solucionó para mí.
Parece que ansible no está respetando ~/.ssh/config
:
Host raspberrypi.local
StrictHostKeyChecking no
Entonces pude iniciar sesión a través del shell pero Ansible falló. Lo siguiente me lo arregló:
ssh-keygen -R raspberrypi.local
Finalmente conseguí que el mío funcionara, esto es con el usuario root, primera provisión, supongo. Gracias por todos los consejos, aunque esto es un poco extraño.
archivo: hosts
[test]
91.121.103.38 ansible_ssh_user=root
[test:vars]
ansible_password=MustBeTheRealPassword
mando
ansible-playbook -vvvv preciousbook.yml -c paramiko -u root --ask-become-pass
Me di cuenta de que el usuario de root
puedo ejecutar sin el indicador -u root
y sin configurar root<strong i="21">@ipaddr</strong> , rather just leave it the as the
ipaddr` en los hosts.
ansible-playbook -vvvv php.yml -c paramiko --ask-become-pass
- No lo he intentado como usuario no root o con claves SSH ya que no estoy usando Digital Ocean que lo hace conveniente cuando arranca una máquina.
@JREAM @PGUTH @roolo @ohallors @ringe @mhfowler @midolo @ upbeta01 (y otras personas que pueden reproducir esto).
¿Podría probar con la versión candidata a la versión 2.3 (http://releases.ansible.com/ansible/ansible-2.3.0.0-0.3.rc3.tar.gz)?
Y si aún falla, proporcione la configuración ansible.cfg, la salida -vvv y cualquier información que se pueda compartir sobre las configuraciones y versiones de ssh involucradas.
@alikins - Intenté probarlo. Recibo un error al ejecutar el comando ansible-playbook
. Intento aislar la versión usando virtualenv
. ¿Me he perdido algo?
┌─(ansible-2.3)[User][Eldies-MacBook-Pro][~/Private/work/infra/2.3/ansible-2.3.0.0/bin]
└─▪ ./ansible-playbook -l hz-monitor -vvvv
Traceback (most recent call last):
File "./ansible-playbook", line 43, in <module>
import ansible.constants as C
ImportError: No module named ansible.constants
Así es como se ve en la estructura de archivos.
┌─(ansible-2.3)[User][Eldies-MacBook-Pro][~/Private/work/infra/2.3/ansible-2.3.0.0/bin]
└─▪ ls
ansible ansible-console ansible-galaxy ansible-pull ansible.cfg hosts
ansible-connection ansible-doc ansible-playbook ansible-vault check_uptime.yml roles
@ upbeta01 Genial, gracias por la prueba. Parece que el paquete de Python ansible no está en sys.path. (es decir, ~ / Private / work / infra / 2.3 / ansible-2.3.0.0 / lib / ansible debe estar en sys.path). No estoy seguro de cómo se configuró virtualenv, pero si es básicamente el tar.gz descomprimido, intente:
cd ~/Private/work/infra/2.3/ansible-2.3.0.0/
source hacking/env-setup
Eso agregará ~ / Private / work / infra / 2.3 / ansible-2.3.0.0 / lib / ansible a PYTHONPATH y establecerá ANSIBLE_HOME en ~ / Private / work / infra / 2.3 / ansible-2.3.0.0 que debería ponerlo en marcha.
Creo que una instalación pip del tarball en el virtualenv debería funcionar también, pero no lo he verificado.
Todavía tengo este problema, estoy dispuesto a probarlo si lo necesita.
Ubuntu 16.04 y ansible 2.0.0.2
xxxx<strong i="7">@xxxx</strong>:/etc/ansible# ansible-playbook provision.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
fatal: [c999951727-cloudpro-689901068]: UNREACHABLE! => {"changed": false, "msg": "ERROR! Authentication failure.", "unreachable": true}
PLAY RECAP *********************************************************************
c999951727-cloudpro-689901068 : ok=0 changed=0 unreachable=1 failed=0
xxx<strong i="8">@xxxxx</strong>:/etc/ansible# ansible New -m ping
c999951727-cloudpro-689901068 | SUCCESS => {
"changed": false,
"ping": "pong"
}
root<strong i="9">@rundeck</strong>:/etc/ansible# ansible-playbook provision.yml
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [c999951727-cloudpro-689901068]
TASK [user : Create Ansible User] **********************************************
changed: [c999951727-cloudpro-689901068]
TASK [user : Add Ansible Authorized Key] ***************************************
changed: [c999951727-cloudpro-689901068]
TASK [user : Create Personal User] *********************************************
changed: [c999951727-cloudpro-689901068]
TASK [user : Add Personal Authorized Key] **************************************
changed: [c999951727-cloudpro-689901068]
PLAY RECAP *********************************************************************
c999951727-cloudpro-689901068 : ok=5 changed=4 unreachable=0 failed=0
Tengo el mismo problema
Asegúrese de tener python-simplejson
ya que ni siquiera puede recopilar datos sin él. Agregar esto al comienzo de mis libros de jugadas ayuda.
gather_facts: no
pre_tasks:
- name: 'install python2'
raw: apt-get update; apt-get -y install python-simplejson
- setup:
filter=ansible_*
tags: always
@shadycuz : para mí, esto se resolvió en Ubuntu 16.04 con esto agregado a ansible.cfg:
[ssh_connection]
# for running on Ubuntu
control_path=%(directory)s/%%h-%%r
En una nota relacionada, esto lo resolvió cuando se ejecutaba en un host Mac:
[ssh_connection]
# for running on OSX
control_path = %(directory)s/%%C
También tuve ese problema y descubrí que mi servidor sftp no se inició. reconfiguró el servidor sshd cambiando / etc / ssh / sshd_config y reinicie el servidor ssh. el problema se ha ido.
Ejecución de un host Mac, @ttrahan 's ansible.cfg solución no funcionó para mí. Tengo un libro de jugadas que se conecta a varias cajas, la mayoría de las cuales ejecutan Ubuntu 14.04 o 12.04. Todas las cajas de Ubuntu funcionan sin problemas. Sin embargo, las dos cajas que ejecutan CentOS no se conectan con el siguiente error:
fatal: [<a-centos-host>]: UNREACHABLE! => {"changed": false, "msg": "Failed to open session: [Errno 54] Connection reset by peer", "unreachable": true}
@alikins , no estoy seguro de si el env-setup
que mencionas es var
o si realmente pertenece a un archivo.
Esto es lo que veo dentro del directorio hacking
┌─[User][Eldies-MacBook-Pro][~/Private/work/infra/2.3/ansible-2.3.0.0]
└─▪ source hacking/
dump_playbook_attributes.py module_formatter.py templates/
¿Debo volver a descargar el archivo tar, teniendo en cuenta que contiene nuevos archivos?
Hola, ¿alguien puede ayudarme? No puedo hacer ping al enrutador cisco desde mi VM (CentOS 7.)
[root<strong i="6">@centos7</strong> ansible]# ansible ios -m ping
<IP_address> | UNREACHABLE! => {
"changed": false,
"msg": "Authentication failed.",
"unreachable": true
}
Aquí está el fragmento del archivo ansible.cfg:
transport = paramiko
host_key_checking = False
# SSH timeout
timeout = 20
archivo hosts:
[ios]
10.10.15.233 ansible_ssh_user=local ansible_ssh_pass=password
json
[root<strong i="15">@centos7</strong> ansible]# ansible --version
ansible 2.2.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
Hola,
Tuve el mismo 'error inalcanzable' con ansible 2.3.0.0 ejecutándose en Ubuntu 16.04.
-C paramiko añadido
Ejemplo: $ ansible-playbook -i Inventory ./router/tasks/get-vlan.yml -c paramiko)
Pero luego recibí un mensaje de error completamente diferente: no hay métodos de autenticación disponibles,
Ese nuevo error se resolvió al agregar 'conexión: local' al YAML y continuó funcionando incluso después de eliminar -c paramiko, resolviendo así ambos problemas.
$ ansible-playbook -i inventory ./router/tasks/get-vlan.yml
`---
- name: Check for VLAN 123 from Cisco IOS Routers
hosts: routers
connection: local
vars_prompt:
- name: "username"
prompt: "Username"
private: no
- name: "password"
prompt: "Password"
tasks:
- ios_command:
username: "{{ username }}"
password: "{{ password }}"`
commands: "show ip int bri | inc vlan 123"
@ dave-morrow Gracias por su respuesta.
Después de leer muchos documentos, descubrí hace dos días que la solución está usando 'conexión = local'.
Pero me pregunto por qué la línea de comandos de IOS no califica como shell para ansible. ¿Por qué necesitamos ejecutar los comandos en los hosts ansible? ¿Alguna idea, por favor?
@ b2sweety Es una buena pregunta para la que no sé la respuesta.
Lo siento, pero Ansible es muy nuevo para mí, de hecho llevo jugando con él poco más de un día.
Sé que la CLI de Cisco (IOS) no se parece en nada a la CLI de UNIX (POSIX), así que quizás eso tenga algo que ver con eso.
Dejaré que otros mejor calificados respondan a esta pregunta.
Hola equipo de Ansible,
He configurado Ansible en máquinas Rhel 7x. Tomé ejemplos como 2 máquinas. 1 - Servidor de control y nodo 1. Copié las claves SSH y pude iniciar sesión sin contraseña entre sí con éxito.
al intentar verificar "ping: a través de ansible, obteniendo un error para la dirección IP del servidor de control local / localhost en el archivo Invertory.
[ansible@ip-172-31-27-41 .ssh]$ ansible test -m ping
172.31.27.41 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).\r\n",
"unreachable": true
}
Ese es el error, por favor proporcione una solución. Mi correo: "nlkalyan. [email protected] "
Lo que me solucionó fue deshabilitar paramiko estableciendo ansible_connection=ssh
.
UNREACHABLE! => {
"changed": false,
"msg": "('Bad authentication type', [u'publickey']) (allowed_types=[u'publickey'])",
"unreachable": true
}
# Hosts File
[host_name]
XX.XXX.XXX.XXX ansible_user=username ansible_connection=ssh
ejecutar comando:
ansible-playbook -i inventory_file playbook.yml
@Vcoleman , Gracias por la ayuda ..
Hice el paso que me diste, sigue siendo el mismo error ...
Comando ping
$ ansible test -m ping
El error que se muestra en el mío era algo diferente al tuyo .---->
"" msg ":" Error al conectarse al host a través de ssh: Permiso denegado (clave pública, gssapi-keyex, gssapi-with-mic) .rn ""
Cambié mi archivo de hosts como se muestra a continuación.
mi archivo de host entra ::
[test]
172.31.27.41 ansible_user=ansible ansible_connection=ssh
#172.31.22.200
172.31.21.47
en el 172.31.27.41 anterior es mi servidor local (servidor de control)
otra vez tuve el mismo problema ..
@pavaniandkalyan ¿Está seguro de que el usuario que tiene la clave SSH correcta en RPi es el usuario ansible
?
Estoy seguro de que he copiado todas las claves del servidor de control a todos los nodos y viceversa como usuario ansible.
¿Es necesario instalar / actualizar / hacer ping en el servidor de control? Me refiero a que la intracción del servidor de control debe ser necesaria durante la automatización con Ansbile. ¿O solo empujar los nodos es suficiente?
No parece correcto que necesite agregar -c paramiko:
ansible -i inventory/ec2.py us-west-2 -u ec2-user -m ping -c paramiko
x.x.217.210 | SUCCESS => {
"changed": false,
"ping": "pong"
}
ansible -i inventory/ec2.py us-west-2 -u ec2-user -m ping
x.x.217.210 | UNREACHABLE! => {
"changed": false,
"msg": "SSH Error: data could not be sent to remote host \"x.x.217.210\". Make sure this host can be reached over ssh",
"unreachable": true
}
msg: SSH Error: data could not be sent to remote host "x.x.217.210". Make sure this host can be reached over ssh
Estaba teniendo el mismo problema:
$ ansible local -m ping
127.0.0.1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).\r\n",
"unreachable": true
}
Resolvió el problema instalando sshpass usando el comando:
sudo apt-get install sshpass
Después de instalar sshpass, ejecuté este comando:
ansible local -m ping --ask-pass
SSH password:
127.0.0.1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
¡¡¡Espero que esto ayude!!!
utilice paramiko como solución.
ansible-playbook abc.yml -i development -c paramiko
o agregar a la configuración ansible
[defaults]
transport = paramiko
Tuve el mismo problema:
Mi resolución 👍 *
ansible -c local -i all_servers all_servers -m ping
-c local funcionó para mí, configuré
transport = local
y luego no necesité dar la opción-c
en las ejecuciones. Creo que-c local
respeta la configuración del archivo.ssh/config
. si no se da, necesita definir todas las configuraciones enansible.cfg
archivo. esa es mi suposición.
La cita anterior que escribí ayer, pensando que el problema se resolvió. LOS AJUSTES ANTERIORES QUE MENCIONÉ NO SON LA RESPUESTA CORRECTA
Por lo que veo. La forma en que ansible está funcionando es bastante correcta. Toma en consideración que puede enviar su archivo ansible.cfg con su código. Entonces, las versiones anteriores realmente funcionaban con sus archivos .ssh/config
. Pero las nuevas versiones no lo hacen.
Entonces, las nuevas versiones de ansible le permiten configurar los ajustes de ssh en el bloque [ssh_connection]. donde puede poner todos los requisitos para ssh. Eso significa que no necesitaría el archivo .ssh / config si es el servidor de control y su archivo de inventario puede tener registros de IP o dns. Pero como la mayoría de nosotros estamos acostumbrados a que ansible honre, nuestro .ssh/config
tuvo este problema. Para esto tienes que decirle explícitamente a Ansible la ubicación del ssh config file
. Como abajo
ssh_args = -F /Users/vinitk/.ssh/config -o ControlMaster=auto -o ControlPersist=30m
15 control_path = ~/.ssh/controlmasters/%%r@%%h:%%p
La configuración ControlMaster and ControlPersist
y la Control_path
correspondientes a la misma configuración que tengo en mi archivo .ssh/config
. Esto también puede ser otra cosa si desea que ansible los cree en una ubicación diferente. Para facilitar el uso, puse la misma ruta para que Ansible
y cualquier otra herramienta como Parallel-ssh
puedan usar el mismo ControlMaster
.
el control_path = ~/.ssh/controlmasters/%%r@%%h:%%p
tiene dos signos %%
opuestos a uno solo.
Luego, la siguiente parte es que Ansible por defecto está configurado en smart
en la forma en que transfiere archivos. debajo está el bloque.
# Control the mechanism for transferring files (new)
# If set, this will override the scp_if_ssh option
# * sftp = use sftp to transfer files
# * scp = use scp to transfer files
# * piped = use 'dd' over SSH to transfer files
# * smart = try sftp, scp, and piped, in that order [default]
transfer_method = scp
Necesita tener sftp Subsystem
en el archivo sshd_config
en los servidores. En mi caso, un par de servidores no tenían esa configuración y sftp
falló, lo que provocó que la conexión regresara como UNREACHABLE
. Según la configuración de smart
, dice que intentará sftp, then scp and then pipe
en ese orden, pero no me funcionó la configuración de transfer_method = scp|piped
.
Espero que ayude
Solo una actualización para aquellos que estén interesados.
Todas las soluciones aquí me han fallado. Lo único que funcionó fue la degradación a ansible v. 2.1.5.0-1, que está disponible en el repositorio. Entonces todo es suave.
Luché contra esto durante 2 horas y luego encontré "-c ssh" en el comando run-playbook. Trabajado como un encanto. Se soluciona algún problema que tienen las versiones antiguas de OpenSSH con Ansible.
Hola a todos ,
Cuando intento traer el clúster de cambio abierto, aparece el siguiente error. Ejecuto el siguiente comando.
sudo ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml
fatal: [g_all_hosts | default([])]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname g_all_hosts | default([]): Name or service not known\r\n", "unreachable": true}
json
[rhnuser3 @ ip-172-31-10-250 ~] $ ansible -m ping a todos
ip-172-31-10-250.ca-central-1.compute.internal | Inalcanzable! => {
"cambiado": falso,
"msg": "No se pudo conectar al host a través de ssh: Error en la verificación de la clave del host.
"inalcanzable": verdadero
We have verified following steps.
Master communicating to the node
[ rhnuser3 @ ip-172-31-10-250 ~] $ ssh [email protected]
Último inicio de sesión: miércoles 16 de agosto 08:05:16 2017 del maestro
[ rhnuser3 @ node ~] $
Node Communicating to the master
[ rhnuser3 @ ip-172-31-9-57 ~] $ ssh [email protected]
Último inicio de sesión: miércoles 16 de agosto 07:56:06 2017 desde el nodo
[ rhnuser3 @ master ~] $
We have changed necessary changed necessary configuration file from master and node server.
vi /etc/ansible/ansible.cfg
inventario = / etc / ansible / hosts
sudo_user = rhnuser3
Removed comments from following lines.
We have updated /etc/hosts/file – it is look like
[ rhnuser3 @ ip-172-31-10-250 ~] $ cat / etc / hosts
172.31.10.250 maestro
172.31.9.57 nodo
sudo vi / etc / ssh / sshd_config
sudo cat / var / log / secure
```log
Aug 16 08:28:09 localhost sshd[22792]: Disconnecting: Too many authentication failures for root [preauth]
Aug 16 08:28:09 localhost sshd[22792]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=blk-222-40-174.eastlink.ca user=root
Aug 16 08:28:09 localhost sshd[22792]: PAM service(sshd) ignoring max retries; 6 > 3
Servidor maestro realicé los siguientes comandos
ssh-keygen -t rsa
cat /home/rhnuser3/.ssh/id_rsa.pub
sudo vi /home/rhnuser3/.ssh/authorized_keys
sudo chmod 600 .ssh/authorized_keys
sudo chown rhnuser3:rhnuser3 .ssh/authorized_keys
cat /home/rhnuser3/.ssh/id_rsa
Servidor de nodo realicé el siguiente comando.
cd /home/rhnuser3
mkdir .ssh
chmod 700 .ssh
chown rhnuser3:rhnuser3 .ssh
sudo vi /home/rhnuser3/.ssh/authorized_keys
sudo chmod 600 .ssh/authorized_keys
sudo chown rhnuser3:rhnuser3 .ssh/authorized_keys
sudo vi /home/rhnuser3/.ssh/id_rsa
sudo chmod 600 .ssh/id_rsa
sudo chown rhnuser3:rhnuser3 .ssh/id_rsa
Intente sugerir sobre estos.
@virtusademo
virtusademo comentó hace un momento
[rhnuser3<strong i="64">@master</strong> ~]$ ansible --version
ansible 2.3.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, May 3 2017, 07:55:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-14)]
[rhnuser3<strong i="67">@master</strong> ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.1 (Maipo)
Estoy usando ansible en 2.3.1.0. agregué mis hosts en / etc / ansible / hosts. si lo hago, aparece el error --list-hosts a continuación
¡ERROR! el campo 'hosts' es obligatorio pero no se configuró. En ansible.cfg, la ruta de inventario es la misma. ¿Alguien puede ayudarme en esto?
hola..evrey one soy un pionero de ansible, lo voy a usar para entrega continua.
Quiero saber cómo el inventario, el libro de jugadas y los módulos interactúan internamente.
si alguien sabe esto, por favor contácteme en
¿Cómo resolvemos esto al final del día?
editar : parece que el servicio SSH en mi máquina remota puede haber fallado. Traté de iniciar una nueva sesión ssh con PuTTY y cierra la conexión antes de la indicación de inicio de sesión.
edit2 : el servicio SSH en la máquina remota ya no funciona correctamente, aunque todavía no he recibido una respuesta sobre cuál es exactamente el error. Dado que sucedió directamente después de que se ejecutó este script de Ansible, lo dejo aquí como si un error de Ansible causara que sshd se bloqueara, aún puede estar relacionado con este problema. Algunos detalles para cualquiera que intente recrear: tanto las máquinas de destino como las de control son Intel xeons que ejecutan CentOS 7. La versión de control es centos-release-7-4.1708.e17.centos.x86_64 y el destino tiene una configuración de gráficos de iris.
Parece que tengo este problema de repente en ansible 2.4.1.0
. Todo estaba funcionando bien mientras depuraba un nuevo rol y, de repente, esto comenzó a suceder.
Estas fueron las tareas con formato incorrecto que fallaron justo antes de que dejara de conectarse:
- name: Get media SDK install folder contents
command: "ls /opt/a-specific-directory/"
register: directories
- name: verify expected directories in install folder
fail:
when: not ({{directories}}|search({{item}}))
vars:
nested_list:
- - dir1
- dir2
- dir3
- dir4
- dir5
- dir6
- dir7
- dir8
- dir9
with_items: "{{ nested_list }}"
Lanzaron este error:
TASK: verify expected directories in install folder
[WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: not
({{directories}}|search({{item}}))
fatal: [10.105.15.118]: FAILED! => {"failed": true, "msg": "The conditional check 'not ({{directories}}|search({{item}}))' failed. The error was: template error while templating string: expected token ':', got 'string'. String: {% if not ({'stderr_lines': [], u'changed': True, u'end': u'2017-11-28 12:12:31.502092', 'failed': False, u'stdout': u'dir2\\ndir3\\ndir4\\ndir5\\ndir6\\ndir7\\ndir8\\ndir9', u'cmd': [u'ls', u'/opt/a-specific-directory/'], u'rc': 0, u'start': u'2017-11-28 12:12:31.500354', u'stderr': u'', u'delta': u'0:00:00.001738', 'stdout_lines': [u'dir2', u'dir3', u'dir4', u'dir5', u'dir6', u'dir7', u'dir8', u'dir9']}|search(dir1)) %} True {% else %} False {% endif %}\n\nThe error appears to have been in '/home/my-playbook-location/playbook.yml': line 6, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Verify expected directories in media SDK install folder\n ^ here\n"}
Copié el mensaje de error de ejecutar ansible-playbook -vvvv myplaybook.yml
después y obtuve:
Failed to connect to the host via ssh: OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/home/MY-USER/.ansible/cp/01607ca611" does not exist
debug2: resolving "[MY-REMOTE-IP]" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to MY-REMOTE-IP [MY-REMOTE-IP] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug3: timeout: 10000 ms remain after connect
debug1: identity file /home/MY-USER/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/MY-USER/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 10.105.15.118:22 as 'root'
debug3: hostkeys_foreach: reading file "/home/MY-USER/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/MY-USER/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from 10.105.15.118
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
Connection reset by MY-REMOTE-IP port 22
No estoy seguro de qué hacer con eso, ya que había estado funcionando hasta ahora.
Ambos archivos id_rsa en el controlador y las claves autorizadas en la máquina remota no han cambiado desde que agregué la clave pública allí hace una semana y los permisos siguen siendo 600.
editar : parece que el servicio SSH en mi máquina remota puede haber fallado. Traté de iniciar una nueva sesión ssh con PuTTY y cierra la conexión antes de la indicación de inicio de sesión.
Sí, incluso espero ese problema cada vez que empiezo a usar Ansible en una nueva Mac. Eso es triste.
Me encontré con esto, sin embargo, solo parece ocurrir en mi mac.
conexión: local en el libro de jugadas solucionó mi problema
Mismo error que enfrenta:
fatal: [1.2.3.4]: ¡inalcanzable! => {"cambiado": falso, "msg": "No se pudo conectar al host a través de ssh: Advertencia: Se agregó permanentemente '1.2.3.4' (ECDSA) a la lista de hosts conocidos.rnPermiso denegado (clave pública) .rn" , "inalcanzable": verdadero}
SSH funciona pero ansible arroja un error inalcanzable
@induraj parece el usuario con el que su ansible en ejecución no tiene acceso a la clave.
¿Podría también poner la salida de ansible --version.
también asegúrese de haber instalado ansible solo por un método (pip o brew)
Gracias por la respuesta rápida:
(ansble) ansible @ sharma : ~ $ pip freeze | grep ansible
ansible == 2.4.2.0
¿Estás ejecutando el virtualenv? ¿Tiene acceso a la clave?
sí, tienen acceso:
ll ~ / .ssh / raj_aws.pem
-rw ------- 1 ansible ansible 1692 13 de enero 23:12 .ssh / raj_aws.pem.
¿Se requiere algo?
@induraj No estoy completamente seguro, pero es posible que no obtenga los permisos correctos a través de virtualenv.
OKAY. incluso estoy intentando lo mismo, todavía tratando de resolverlo.
déjame compartir lo que tengo hasta ahora.
¿Podría ayudarme a acceder a la máquina virtual EC2 a través de ansible para que pueda seguir adelante con mis pruebas con ansible?
He configurado en la máquina base sin que virtualenv esté funcionando. Puede haber algún problema de autenticación de usuario.
Si su ssh-agent tiene varias claves, use la variable ansible_ssh_private_key_file en la entrada de su host para especificar su clave privada en lugar de que ssh-agent pase la clave incorrecta y sea rechazada.
¡Hola!
Muchas gracias por su interés en Ansible. Sinceramente, significa mucho para nosotros.
Esta parece ser una pregunta de usuario, y nos gustaría dirigir este tipo de cosas a la lista de correo o al canal de IRC.
Si puede pasar por allí, se lo agradeceríamos. Esto nos permite mantener el rastreador de problemas para errores, solicitudes de extracción, RFE y similares.
Gracias una vez más y esperamos verte en la lista o en el IRC. ¡Gracias!
En mi caso, el problema principal es que el archivo de control no se creó y, como resultado, el comando proxy no tenía los permisos adecuados.
Comando revelado al agregar la opción -vvvvvvv
a ansible cmd:
ssh -vvv -o ControlMaster=auto -o ControlPersist=30m -o ConnectionAttempts=100 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile="secret.id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=luser -o ConnectTimeout=10 -o 'ProxyCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p -q [email protected]' -o ControlPath=/Users/me/.ansible/cp/3b9a3c71ba 10.0.3.27 '/bin/sh -c '"'"'python && sleep 0'"'"''
Si creé manualmente una ruta a 10.0.3. * Y volví a ejecutar ese comando sin la opción -o 'ProxyCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p -q [email protected]'
. Se creó el archivo de control, luego todo funcionó.
Jugué un poco con las opciones de ForwardAgent en mi host y en el host proxy sin éxito. Eventualmente, simplemente hice un despeje y ejecuté ese comando para cada uno de los hosts que fallaban y dejé que el truco desbloqueara mi trabajo.
Estaba usando una clave privada no estándar y no se encontraba. Fueron 600 permanentes. ssh-add <path-to-private-key>
solucionó mi problema.
Agregar mi clave con ssh-copy-id al servidor remoto solucionó el problema.
agregar -o ControlMaster=auto -o ControlPersist=30m
a ssh args solucionó el problema para mí.
Más:
Obteniendo el error "INALCANZABLE" en medio de tareas de rol Se detendría en la misma tarea. Pero se ejecutaría si aislara solo esa tarea (a través de etiquetas).
ansible -m ping myServer
me dio UNREACHABLE!
error.
ansible -c local -m ping myServer
funcionó.
EDITAR: Para solucionar esto en mi libro de jugadas, tuve que poner:
- hosts: dev
connection: local
Tuve el mismo problema con ansible 2.6.0
mis ssh_args en ansible.cfg
ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=30m -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
Pude SSH en los hosts manualmente
pero ejecutar ansible-playbook o ansible -m ping tuvo problemas
degradar ansible a 2.5.5 resolvió el problema para mí
Tengo el mismo problema, ubuntu 14.04 con ansible 2.6.2 (actualización desde ansible 1.9)
ansible -m ping myServer gave me UNREACHABLE! error.
ansible -c local -m ping myServer worked.
según @kararukeys
Bajé a 2.5.5, pero sigue siendo el mismo
2018-08-01 16:00:32 [mini<strong i="10">@hq</strong> ansiblecontrol]$ ansible hqpc222.abc.com -i inventory/kw.production -m ping -vvv
/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a 2.7.x release that supports hmac.compare_digest as soon as possible.
utils.DeprecatedIn23,
ansible 2.5.5
config file = /home/mini/D/ansiblecontrol/ansible.cfg
configured module search path = [u'/home/mini/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4]
Using /home/mini/D/ansiblecontrol/ansible.cfg as config file
Parsed /home/mini/D/ansiblecontrol/inventory/kw.production inventory source with ini plugin
[pid 2014] 16:00:41.194783 D mitogen: mitogen.service.Pool(0x7f73f53147d0, size=16, th='MainThread'): initialized
[pid 2014] 16:00:41.195890 D ansible_mitogen.process: Service pool configured: size=16
META: ran handlers
[pid 2033] 16:00:41.233401 D mitogen: unix.connect(path='/tmp/mitogen_unix_uMVCQQ')
[pid 2033] 16:00:41.234083 D mitogen: unix.connect(): local ID is 1, remote is 0
[pid 2014] 16:00:41.235861 D mitogen: mitogen.ssh.Stream(u'default').connect()
[pid 2014] 16:00:41.304490 D mitogen: hybrid_tty_create_child() pid=2037 stdio=63, tty=17, cmd: ssh -o "LogLevel ERROR" -o "Compression yes" -o "ServerAliveInterval 15" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" -o "GlobalKnownHostsFile /dev/null" -C -o ControlMaster=auto -o ControlPersist=60s hqpc222.abc.com /usr/bin/python -c "'import codecs,os,sys;_=codecs.decode;exec(_(_(\"eNqFkc1OwzAQhM/NU+S2tmqlTuiFSJFAPSAOCClC9AAVyo9DLRLbOG5NeXq2KVKTcuC2n3bWMxrnbJ3pPjLSCEIDy/yIZBMiNNp+EJoGM5zrnUkIZzHn9Mw5G5PFbXziqtW9IPkY7BjWY/AIaNgf0L4tHLp2YZaFUBfWSwVhoephKb5EtXNF2Yphvdj1dlFKtTAHt9UKMOfsQjbPhsO9sL3U6iW92gy2Qu2lRYbb/O6Zwyabnp00iC2ZLtgU50A66fS7UGknFRrcbD/7JOGR6Arn0DOqdBc5nyY8XlKgAT7rrXSCxAwe7p8eOeevCjBOpWtsnQar7I0ce6+1EQrbBlsCjawoahInS35NGXxLgy81Jjvr1gx8CcevaMyvwWqYT/VeqP1/6r8p40nKH0t5sts=\".encode(),\"base64\"),\"zip\"))'"
[pid 2014] 16:00:41.305373 D mitogen: mitogen.ssh.Stream(u'local.2037').connect(): child process stdin/stdout=63
[pid 2014] 16:00:51.245756 D mitogen: mitogen.ssh.Stream(u'local.2037'): child process still alive, sending SIGTERM
[pid 2033] 16:00:51.246902 D mitogen: mitogen.core.Stream(u'unix_listener.2014').on_disconnect()
[pid 2033] 16:00:51.247108 D mitogen: Waker(Broker(0x7f73f4ac2dd0) rfd=14, wfd=15).on_disconnect()
[pid 2014] 16:00:51.247242 D mitogen: mitogen.core.Stream(u'unix_client.2033').on_disconnect()
hqpc222.abc.com | UNREACHABLE! => {
"changed": false,
"msg": "Connection timed out.",
"unreachable": true
}
[pid 2014] 16:00:51.288028 I mitogen: mitogen.service.Pool(0x7f73f53147d0, size=16, th='mitogen.service.Pool.7f73f53147d0.worker-12'): channel or latch closed, exitting: None
[pid 2014] 16:00:51.288404 D mitogen: Waker(Broker(0x7f73f530af50) rfd=9, wfd=11).on_disconnect()
[pid 2014] 16:00:51.288691 D mitogen: <mitogen.unix.Listener object at 0x7f73f5314450>.on_disconnect()
2018-08-01 16:00:51 [mini<strong i="11">@hq</strong> ansiblecontrol]$
alguna sugerencia ? por favor ~
TIPO DE PROBLEMA
- Informe de error
VERSION ANSIBLE
ansible 2.0.0.2 config file = configured module search path = Default w/o overrides
CONFIGURACIÓN
Sin cambios
SO / MEDIO AMBIENTE
OS X El Capitan Versión 10.11.3
RESUMEN
Puedo conectarme a mi Rasberry Pi a través de ssh a través de un cable ethernet a través de "ssh [email protected] " pero la ejecución de Ansible con esta dirección IP como host falla.
He configurado con éxito esta Rasberry Pi con ansible a través de wifi (usando la dirección IP de wifi), pero ahora intento usar ansible a través de la conexión directa de ethernet, aparece el mensaje de error críptico:
`TASK [setup] ******************************************************************* fatal: [169.254.0.2]: UNREACHABLE! => {"changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true}`
Debido a que _puedo_ conectarme con éxito a este pi usando esa dirección IP a través de ssh desde la terminal, estoy planteando que esto es un error en Ansible.
PASOS PARA REPRODUCIR
Ejecuto este comando para ejecutar el rol
ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo -c paramiko -vvvv
También lo intenté
ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo -vvvv
que conducen al mismo error.
archivo hosts
[pis] 169.254.0.2
libro de jugadas
--- - name: Ansible Playbook for configuring brand new Raspberry Pi hosts: pis roles: - pi remote_user: pi sudo: yes
Supongo que el rol no es realmente importante porque ansible está fallando en el paso de conexión ssh.
RESULTADOS PREVISTOS
Espero que ansible se conecte a pi y ejecute el rol (lo hice con éxito al conectarme a través de una dirección IP a través de wifi)
RESULTADOS ACTUALES
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getpass.py:83: GetPassWarning: Can not control echo on the terminal. No config file found; using defaults passwd = fallback_getpass(prompt, stream) Warning: Password input may be echoed. SSH password: raspberry [DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default). This feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. Loaded callback default of type stdout, v2.0 1 plays in ansible-pi/playbook.yml PLAY [Ansible Playbook for configuring brand new Raspberry Pi] ***************** TASK [setup] ******************************************************************* <169.254.0.2> ESTABLISH CONNECTION FOR USER: pi on PORT 22 TO 169.254.0.2 CONNECTION: pid 2118 waiting for lock on 10 CONNECTION: pid 2118 acquired lock on 10 fatal: [169.254.0.2]: UNREACHABLE! => {"changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true} PLAY RECAP ********************************************************************* 169.254.0.2 : ok=0 changed=0 unreachable=1 failed=0
En OpenSSH_7.9p1, OpenSSL 1.1.1b, ansible 2.7.8, cuando se enfrenta al error UNREACHABLE
, con msg
que contiene que la autenticación se realizó correctamente ( Authenticated to
) pero mencionando un error pipe ( debug3: mux_client_read_packet: read header failed: Broken pipe
), configurar -o ControlMaster=no
en ssh_args
funcionó para mí sin tener que usar paramiko o soltar ControlPersist
.
Comentario más útil
Esto sucedió de repente cuando actualicé Ansible.
Para ejecutar con éxito tuve que:
Antes solo he corrido
SSH normal con lo siguiente funciona sin problemas:
Algo ha cambiado.
¿Qué información puedo proporcionar para ayudar a depurar esto?
Estoy ejecutando lo siguiente: