web-dev-qa-db-fra.com

Ansible n'a pas réussi à transférer le fichier dans/commande

Récemment, j'utilise ansible pour une grande variété d'automatisation. Cependant, lors du test de Tomcat6 automatique, redémarrez sur des boîtes de serveur Web spécifiques. Je suis tombé sur cette nouvelle erreur que je n'arrive pas à corriger. 

FAILED => failed to transfer file to /command

En regardant la documentation, c'est parce que sftp-server ne figure pas dans sshd_config, mais il y est.

Vous trouverez ci-dessous la commande que j'exécute sur mes hôtes de serveur Web.

ansible all -a "/usr/bin/Sudo /etc/init.d/Tomcat6 restart" -u user --ask-pass --Sudo --ask-Sudo-pass

Il y a un dossier caché .ansible sur chacune des cases, donc je sais que cela leur est destiné, mais que la commande n’est pas exécutée.

L'exécution de -vvvv me donne ceci après:

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'"]

puis

10.10.10.103 | FAILED => failed to transfer file to /home/user/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689/command

Toute aide sur cette question est très appréciée.

Merci,


Modifier:

Pour augmenter la Googleability, voici une autre manifestation de l'erreur corrigée par la réponse choisie.

L'exécution de la commande ansible-playbook -i inventory hello_world.yml donne cet avertissement à chaque hôte.

[WARNING]: sftp transfer mechanism failed on [Host.example.com]. Use ANSIBLE_DEBUG=1 to see detailed information

Et lorsque vous réexécutez la commande en tant que ANSIBLE_DEBUG=1 ansible-playbook -i inventory hello_world.yml, les seules informations supplémentaires que vous obtenez sont les suivantes:

>>>sftp> put /var/folders/nc/htqkfk6j6h70hlxrr43rm4h00000gn/T/tmpxEWCe5 /home/ubuntu/.ansible/tmp/ansible-tmp-1487430536.22-28138635532013/command.py
19
Nvasion

le sous-système sftp est-il activé dans sshd sur le serveur distant? Vous pouvez le vérifier dans/etc/sshd/sshd_config, le nom du fichier de configuration dépend de votre distribution… en tout cas, cherchez-y:

Subsystem      sftp    /usr/lib/ssh/sftp-server

Si cette ligne est commentée, le sftp est désactivé . Pour y remédier, vous pouvez soit activer sftp, soit modifier la configuration Ansible . Je préfère la modification de la configuration Ansible, consultez ansible.cfg et ajoutez /changement:

[ssh_connection]
scp_if_ssh=True
30
stibi

Sans toucher /etc/ansible/ansible.cfg

Si un seul hôte est affecté, le fichier hosts permet de remédier à ce problème par hôte:

alias ansible_Host=192.168.1.102 ansible_ssh_transfer_method=scp

Cette solution nécessite ansible version 2.3 ou supérieure.

[La source]

3
Serge Stroobandt

J'ai récemment reçu un message comme celui-ci pour une raison totalement différente. J'avais un texte parasite qui résultait d'une commande cd - que j'avais dans mon fichier ~/.bashrc. J'ai résolu ce problème en filtrant sa sortie comme suit:

mon ~/.bashrc

...
cd ~/ansible/hacking/ > /dev/null 2>&1 && . env-setup -q && cd - > /dev/null 2>&1
...

Sans ces redirections des commandes cd vers /dev/null je recevais ce message.

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"}

mon ansible.cfg

Les autres détails intéressants de ma situation sont que je l'utilise déjà dans mon fichier ansible.cfg:

[ssh_connection]
scp_if_ssh=True

Et le serveur dans la liste avec le problème, app01, est le même serveur que celui sur lequel j’exécute le playbook Ansible.

Le bit de texte à la fin de mon message d'erreur:

74747432.93-129438354708729/setup:\n\n/home/admin\n "}

c’est ce qui m’a fait comprendre mon problème. C'est le résultat de cd ... lorsqu'il est exécuté lors de la connexion lorsque mon fichier ~/.bashrc est en cours de traitement.

2
slm

Vous pouvez essayer cette solution: 

rm -rf ~/.ansible

Et alors 

ansible-galaxy install cbrunnkvist.ansistrano-symfony-deploy --force

Après réessayer 

ansible-playbook -i  etc/deploy/config/inventory.yml etc/deploy/deploy.yml
0
Nikita Pushkar

Cette solution fonctionnera: 

Étape 1:

(/etc/ansible/hosts) dans le fichier hôte, utilisez ipaddress comme "[email protected]" au lieu de "192.168.1.102".

Étape 2:

Décommentez la propriété dans le fichier "/etc/ansible/ansible.cfg".

scp_if_ssh=True
0
Vijender Marthi