Comment déboguer Ansible questions?
Parfois, ansible
ne pas faire ce que vous voulez. Et en augmentant le niveau de verbosité ne l'aide pas. Par exemple, je suis en train d'essayer de démarrer coturn
serveur, qui vient avec le script d'initialisation sur systemd
OS (Debian Jessie). Ansible juge de l'exécution, mais il ne l'est pas. Comment dois-je regarder tout ce qui se passe sous le capot? Les commandes sont exécutées, et ce de sortie/exit code?
OriginalL'auteur x-yuri | 2017-02-23
Vous devez vous connecter pour publier un commentaire.
De débogage modules
La manière la plus basique est de lancer
ansible
/ansible-playbook
avec une augmentation du niveau de verbosité par l'ajout de-vvv
à l'exécution de la ligne.La méthode la plus radicale pour les modules écrits en Python (Linux/Unix) est de lancer
ansible
/ansible-playbook
avec une variable d'environnementANSIBLE_KEEP_REMOTE_FILES
ensemble de1
(sur la machine de contrôle).Il provoque Ansible de quitter la copie exacte de l'scripts Python exécuté (avec succès ou pas) sur la machine cible.
Le chemin d'accès à l'scripts est imprimé dans l'Ansible journal et pour des tâches régulières, ils sont stockés sous la SSH répertoire home de l'utilisateur:
~/.ansible/tmp/
.Exactement la logique intégrée dans les scripts et dépend de chaque module. Certains sont à l'aide de Python standard ou des bibliothèques externes, que certains appellent des commandes externes.
De débogage tablettes playbook
De même pour le débogage des modules d'augmenter le niveau de détail avec
-vvv
paramètre provoque le plus de données à imprimer à l'Ansible journalDepuis Ansible 2.1 un Playbook Débogueur permet de débogage de manière interactive les tâches qui ont échoué: vérifier, modifier les données; ré-exécuter la tâche.
De débogage connexions
-vvvv
paramètre à laansible
/ansible-playbook
appel provoque le journal d'inclure les informations de débogage pour les connexions.-v
fait une différence? Deansible-playbook
la page de manuel il ne le fait pas.Si vous exécutez
ansible-playbook
sans aucun paramètre, vous verrez:-v, --verbose : verbose mode (-vvv for more, -vvvv to enable connection debugging)
Pouvez-vous élaborer sur la connexion "débogage"? Je vois que
-q
dansssh
options de modifications pour-vvv
, mais pas d'autres changements. Quelle est la différence?github.com/ansible/ansible/search?q=vvvv
la version de
ansible
utilisez-vous?ansible
démarrer zip les modules depuis aussi tôt que2.0
, si je ne me trompe pas.OriginalL'auteur techraf
Voici ce que j'ai trouvé.
Ansible envoie des modules pour le système cible et les exécute. Par conséquent, si vous modifiez le module localement, vos modifications prendront effet lors de l'exécution de playbook. Sur ma machine modules sont à
/usr/lib/python2.7/site-packages/ansible/modules
(ansible-2.1.2.0
). Etservice
module est àcore/system/service.py
. Anisble les modules de (cas deAnsibleModule
classe déclarée àmodule_utils/basic.py
) alog
méthode, qui envoie des messages à systemd journal si disponible, ou revient àsyslog
. Donc, exécutezjournalctl -f
sur le système cible, ajouter des instructions de débogage (module.log(msg='test')
) - module localement, et d'exécuter votre playbook. Vous verrez des instructions de débogage sousansible-basic.py
nom de l'unité.En outre, lorsque vous exécutez
ansible-playbook
avec-vvv
, vous pouvez voir quelques-uns de débogage danssystemd
journal, au moins invocation des messages et des messages d'erreur le cas échéant.Une chose de plus, si vous essayez de déboguer le code qui s'exécute localement avec
pdb
(import pdb; pdb.set_trace()
), vous aurez plus de chances de courir dansBdbQuit
exception. C'est parce quepython
fermestdin
lors de la création d'un thread (ansible
travailleur). La solution ici est de rouvrir lastdin
avant d'exécuterpdb.set_trace()
comme l'a suggéré ici:Merci pour le stdin conseil! Cela a fonctionné avec apb, mais ne fonctionne pas avec ipdb. Lors de l'exécution de mon playbook sur localhost, si, je vois que FDs 0, 1 et 2 sont tous encore en pointant mes ATS, j'ai donc utilisé
sys.stdin = os.fdopen(0, 'r')
au lieu et ipdb était heureux.OriginalL'auteur x-yuri