web-dev-qa-db-fra.com

Ansible Timeout (12s) en attente d'une invite d'élévation de privilèges

J'ai du mal à exécuter mon playbook Ansible sur une instance AWS. Voici ma version:

$ ansible --version
ansible 2.0.0.2

J'ai créé un fichier d'inventaire en tant que:

[my_ec2_instance]
default ansible_Host=MY_EC2_ADDRESS ansible_user='ubuntu' ansible_ssh_private_key_file='/home/MY_USER/MY_KEYS/MY_KEY.pem'

Test de la connexion à mon serveur:

$ ansible -i provisioner/inventory my_ec2_instance -m ping
default | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Maintenant, lorsque j'exécute mon playbook sur cet inventaire, j'obtiens l'erreur Timeout (12s) waiting for privilege escalation Prompt comme suit:

$ ansible-playbook -i provisioner/inventory -l my_ec2_instance provisioner/playbook.yml

PLAY [Ubuntu14/Python3/Postgres/Nginx/Gunicorn/Django stack] *****

TASK [setup] *******************************************************************
fatal: [default]: FAILED! => {"failed": true, "msg": "ERROR! Timeout (12s) waiting for privilege escalation Prompt: "}

NO MORE HOSTS LEFT *************************************************************

PLAY RECAP *********************************************************************
default                    : ok=0    changed=0    unreachable=0    failed=1

Si je lance le même playbook en utilisant le .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory Comme paramètre d'inventaire, cela fonctionne parfaitement sur mon instance de Vagrant (je crois que cela prouve qu'il n'y a rien de mal dans le playbook/les rôles lui-même)

De plus, si je l'exécute avec un -vvvv, Copiez la ligne exec ssh Et l'exécutez manuellement, il se connecte en effet à AWS sans problème.

Dois-je ajouter un autre paramètre dans mon fichier d'inventaire pour connecter une instance EC2? Qu'est-ce que je rate?

10
vmenezes

Il y a un problème git à propos de cette erreur qui affecte diverses versions d'Ansible 2.x ici https://github.com/ansible/ansible/issues/13278#issuecomment-216307695

Ma solution consistait simplement à ajouter timeout=30 à /etc/ansible/ansible.cfg.

Ce n'est pas un délai d'attente de "tâche" ou de "rôle" et cela a suffi pour résoudre l'erreur (j'ai certains rôles/tâches qui prennent beaucoup plus de temps que cela).

9
vmenezes

Exécutez cela sur l'ordinateur cible

Sudo apt-get install python-simplejson
0
narayan nilesh

J'ai corrigé cette erreur pour mon système car j'avais oublié que j'avais modifié le fichier de configuration ansible:

Sudo vim /etc/ansible/ansible.cfg 

Essayez de commenter les paramètres de privilège qui pourraient essayer de rooter Sudo.

ainsi:

[privilege_escalation]
#become=True
#become_method=su
#become_user=root
#become_ask_pass=False
#become_exe="Sudo su -"

Le compte que j'essayais de ssh n'avait pas la permission de devenir root.

0
DDrake

Vérifiez s'il s'agit d'un problème avec une ancienne version de Sudo sur le serveur de destination. Certaines anciennes versions de Sudo n'ont pas l'option -n ansible utilisations.

0
Jose

Parfois, la phase de configuration prend plus de temps pour les instances ec2, vous devez modifier la valeur du délai d'expiration dans ansible.cfg en quelque chose comme timeout=40. Cela définira la valeur du délai d'attente à 40 secondes.

0
Mr Kashyap

Je crée des images sécurisées VM pour AWS, QEMU et VBox sur un réseau isolé, avec une prise en charge DNS limitée. L'augmentation du délai d'expiration SSH à 40 secondes a eu un effet limité dans ma situation.

J'utilise Packer v1.5.5, Ansible v2.9.2 et OpenSSH v7.4p1

Ma solution a été de changer le paramètre UseDNS dans /etc/ssh/ssd_config à no.

J'ai ajouté les lignes suivantes dans ma configuration de kickstart RHEL/CentOS, avec un excellent résultat.

%post
# Disable DNS lookups by sshd to address Ansible timeouts
Perl -npe 's/^#UseDNS yes/UseDNS no/g' -i /etc/ssh/sshd_config
%end
0
Glenn Bell

J'ai exécuté la commande comme suit et cela fonctionne: commande:

ansible-playbook -c paramiko httpd.yml
0
sambit

Dans mon cas, c'était parce que mon livre de jeu avait

become_method: su
become_flags: "-"

qui invite une demande de mot de passe sur l'hôte.

Ajouter ansible-playbooks … --ask-become-pass et la transmission du mot de passe ont résolu le problème.

0
GG.
vim /etc/ansible/ansible.cfg

Délai d'expiration SSH

timeout = 10 ( change to 60 )
0