hostvars - ansible playbook example
Ansible no pudo transferir el archivo a/comando (5)
Sin tocar /etc/ansible/ansible.cfg
Si solo se ve afectado un host, esto puede remediarse por host en el archivo de hosts
:
alias ansible_host=192.168.1.102 ansible_ssh_transfer_method=scp
Esta solución requiere una versión ansible
2.3 o superior.
Recientemente he estado usando ansible para una amplia variedad de automatización. Sin embargo, durante las pruebas para el reinicio automático de tomcat6 en cajas de servidor web específicas. Me encontré con este nuevo error que parece que no puedo solucionar.
FAILED => failed to transfer file to /command
En cuanto a la documentación, se debe a que sftp-server no está en sshd_config, sin embargo, está allí.
A continuación se muestra el comando que estoy ejecutando para mis servidores de servidor web.
ansible all -a "/usr/bin/sudo /etc/init.d/tomcat6 restart" -u user --ask-pass --sudo --ask-sudo-pass
Hay una carpeta oculta .ansible en cada una de las cajas, así que sé que se está creando, pero no está ejecutando el comando.
Ejecutar -vvvv me da esto después de:
EXEC [''sshpass'', ''-d10'', ''ssh'', ''-C'', ''-tt'', ''-vvv'', ''-o'', ''ControlMaster=auto'', ''-o'', ''ControlPersist=60s'', ''-o'', ''ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r'', ''-o'', ''GSSAPIAuthentication=no'', ''-o'', ''PubkeyAuthentication=no'', ''-o'', ''User=user'', ''-o'', ''ConnectTimeout=10'', ''10.10.10.103'', "/bin/sh -c ''mkdir -p $HOME/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689 && echo $HOME/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689''"]
entonces
10.10.10.103 | FAILED => failed to transfer file to /home/user/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689/command
Cualquier ayuda en este tema es muy apreciada.
Gracias,
Editar:
Para aumentar la googleabilidad, aquí hay otra manifestación del error que corrige la respuesta elegida.
Al ejecutar el comando ansible-playbook -i inventory hello_world.yml
esta advertencia para cada host.
[WARNING]: sftp transfer mechanism failed on [host.example.com]. Use ANSIBLE_DEBUG=1 to see detailed information
Y cuando vuelva a ejecutar el comando como ANSIBLE_DEBUG=1 ansible-playbook -i inventory hello_world.yml
la única información adicional que obtiene es:
>>>sftp> put /var/folders/nc/htqkfk6j6h70hlxrr43rm4h00000gn/T/tmpxEWCe5 /home/ubuntu/.ansible/tmp/ansible-tmp-1487430536.22-28138635532013/command.py
¿Tiene el subsistema sftp habilitado en sshd en el servidor remoto? Puede verificarlo en / etc / sshd / sshd_config, el nombre del archivo de configuración depende de su distribución ... de todos modos, busque allí:
Subsystem sftp /usr/lib/ssh/sftp-server
Si esta línea está comentada, el sftp está deshabilitado. Para solucionarlo, puede habilitar sftp o cambiar la configuración de Ansible. Prefiero el cambio de configuración de Ansible, eche un vistazo a ansible.cfg y añada / cambie:
[ssh_connection]
scp_if_ssh=True
Esta solución funcionará:
Paso 1:
En el archivo host (/etc/ansible/hosts)
use la ipaddress
"[email protected]"
como "[email protected]"
lugar de "192.168.1.102"
.
Paso 2:
Descomente la propiedad en el archivo "/etc/ansible/ansible.cfg"
.
scp_if_ssh=True
Puedes probar esta solución:
rm -rf ~/.ansible
Y entonces
ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy --force
Después de intentar otra vez
ansible-playbook -i etc/deploy/config/inventory.yml etc/deploy/deploy.yml
Recientemente recibí un mensaje como este por una razón completamente diferente. Recibí un texto extraviado que fue el resultado de un comando de cd -
que tenía en mi archivo ~/.bashrc
. Solucioné este problema filtrando su salida de esta manera:
mi ~ / .bashrc
...
cd ~/ansible/hacking/ > /dev/null 2>&1 && . env-setup -q && cd - > /dev/null 2>&1
...
Sin esas redirecciones de los comandos de cd a /dev/null
estaba recibiendo este mensaje.
TASK [setup] *******************************************************************
ok: [app02]
ok: [app03]
fatal: [app01]: FAILED! => {"failed": true, "msg": "failed to transfer file to /home/admin/.ansible/tmp/ansible-tmp-1474747432.93-129438354708729/setup:/n/n/home/admin/n"}
mi ansible.cfg
Los otros detalles interesantes de mi situación son que ya estoy usando esto en mi archivo ansible.cfg
:
[ssh_connection]
scp_if_ssh=True
Y el servidor en la lista con el problema, app01, es el mismo servidor desde el que estoy ejecutando el libro de jugadas de Ansible.
El bit de texto al final de mi mensaje de error:
74747432.93-129438354708729 / setup: / n / n / home / admin / n "}
es lo que me dio la pista en mi problema. Esa es la salida de cd ...
cuando se ejecuta durante el inicio de sesión cuando se procesa mi archivo ~/.bashrc
.