Soy bastante nuevo en los servidores SSH y Ansible, por lo que esta podría ser una pregunta tonta.

Intenté ejecutar un libro de jugadas de Ansible mientras accedía al servidor con una clave privada usando el comando bash a continuación.

ansible-playbook dbserv.yml -i hosts --limit local-servers --private-key=(where I put the private key)

Sin embargo, recibo este error:

fatal: [xxx]: ¡FALLIDO! => {"cambiado": falso, "fallido": verdadero, "invocación": {"nombre_módulo": "configuración"}, "module_stderr": "Conexión compartida a xxx cerrada. \ r \ n", "module_stdout": "/ bin / sh: 1: /usr/bin/python2.7: no encontrado \ r \ n", "msg": "FALLO DEL MÓDULO"}

Tengo Python instalado en mi computadora, así que no entiendo por qué recibo este error.

Entorno del sistema operativo: Ubuntu 16.04.1

8
sabrinazuraimi 13 dic. 2016 a las 08:02
Agregue la información sobre la versión de su sistema operativo de destino y el contenido de dbserv.yml y hosts a su pregunta.
 – 
techraf
13 dic. 2016 a las 09:23

1 respuesta

La mejor respuesta

El mensaje de error que recibe es:

/usr/bin/python2.7: no encontrado

Ansible requiere que la máquina de destino tenga instalado Python para que funcione correctamente (consulte Requisitos del nodo gestionado).

La razón más probable es que su objetivo sea Ubuntu 16.04, que no viene con Python 2 instalado. En este caso, debe instalarlo o probar el soporte experimental para Python 3.

Si Python 2.7 está instalado en un directorio diferente, puede agregar una variable de host, por ejemplo, en su archivo de inventario (asumiendo que el nombre de host es xxx como en su pregunta`):

xxx ansible_python_interpreter=/path/to/python2.7

Para ejecutar módulos con Python 3 (experimental) , colocar:

xxx ansible_python_interpreter=/usr/bin/python3

Nota: Ansible busca de forma predeterminada /usr/bin/python, por lo que es probable que su libro de jugadas, archivo de inventario o ansible.cfg ya contengan configuraciones para /usr/bin/python2.7 que no existen en la máquina de destino.

15
techraf 13 dic. 2016 a las 10:33
Veo. Se usó el comando "whereis python 2.7" en la máquina de destino y estaba en /usr/bin/python2.7. ¿Se supone que debo ejecutar el comando ansible desde la máquina de destino?
 – 
sabrinazuraimi
13 dic. 2016 a las 09:10
Es poco probable que haya un Python en /usr/bin/python2.7 si el sistema operativo le dice a Ansible que no está allí. Si escribe /usr/bin/python2.7, ¿se ejecutará? Además, Ansible no debería solicitar 2.7 de forma predeterminada: consulte su libro de jugadas, ansible.cfg y el archivo de inventario.
 – 
techraf
13 dic. 2016 a las 09:16
Gracias, fue un error de mi parte, el python 2.7 está en realidad en /usr/lib/python2.7 pero ahora tengo un error diferente que dice que no tengo permiso para acceder al intérprete de Python .. (he incluyó la clave privada para la VM en el comando)
 – 
sabrinazuraimi
13 dic. 2016 a las 09:24
No hay intérprete de Python en /usr/lib/python2.7. Es un directorio que contiene bibliotecas. Lo más probable es que no lo inhale.
 – 
techraf
13 dic. 2016 a las 09:27
1
Usted tenía razón. ¡Instalé Python usando el comando "sudo apt-get install python-pip" y funcionó! ¡Gracias!
 – 
sabrinazuraimi
13 dic. 2016 a las 09:44