2017-06-16 3 views
1

Je cours avec un ordinateur de bureau Ubuntu 16.04 en utilisant VirtualBox. Cette machine virtuelle a Ansible 2.4.0 installé. J'essaie d'exécuter une commande ponctuelle ad hoc juste pour prouver que cela fonctionne (je fais un cours en ligne). Pour simuler une petite batterie de serveurs, j'utiliser lxc (containters linux) et ont trois d'entre eux en cours d'exécution:Une commande ad-hoc avec l'hôte direct spécifiée - aucun hôte ne correspond

[email protected]:/home/tomasz/ansible# lxc-ls --fancy 
NAME STATE AUTOSTART GROUPS IPV4  IPV6 
db1 RUNNING 0   -  10.0.3.248 -  
web1 RUNNING 0   -  10.0.3.110 -  
web2 RUNNING 0   -  10.0.3.226 - 

je peux SSH à l'un de ces serveurs, mais lorsque je tente d'exécuter une unique commande ansible, par exemple:

[email protected]:/home/tomasz/ansible# ansible 10.0.3.248 -m ping -u ubuntu 

Je reçois les erreurs suivantes, aucun recensement n'a été adapté:

[WARNING]: No inventory was parsed, only implicit localhost is available 

[WARNING]: provided hosts list is empty, only localhost is available 

[WARNING]: Could not match supplied host pattern, ignoring: 10.0.3.248 

[WARNING]: No hosts matched, nothing to do 

Je suis perplexe, pour être honnête, et en tant que novice Ansible, je ne sais pas comment avance ceci. Semble un problème si simple, n'ont pas rencontré quelque chose de similaire ici sur stackoverflow. Merci beaucoup pour tous les conseils!

+0

_Je fais un cours en ligne_. Y a-t-il un chapitre appelé «inventaire» dans ce cours? –

+0

Oui, il y en a, mais dans cet exemple précis, j'exécute une commande Ansible unique pour un hôte spécifique et comme vous pouvez le voir, je fournis directement l'adresse IP de cet hôte dans la commande. Dans ce cas précis, d'après ce que je crois comprendre, le fichier d'inventaire n'est pas pertinent. –

+0

Stack Overflow est un site de questions de programmation et de développement. Cette question semble être hors sujet car il ne s'agit pas de programmation ou de développement. Voir [Quels sujets puis-je poser à ce sujet?] (Http://stackoverflow.com/help/on-topic) dans le centre d'aide. Peut-être [Super User] (http://superuser.com/) ou [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) serait un meilleur endroit à demander. – jww

Répondre

0

Je fournis directement l'adresse IP de cet hôte dans la commande. Dans ce cas précis, d'après ce que je crois comprendre, le fichier d'inventaire n'est pas pertinent.

Mauvais. Vous spécifiez host pattern, qui doit correspondre aux hôtes de votre inventaire. L'inventaire est un must pour Ansible.

Il existe une option pour spécifier l'inventaire "en ligne". Pour votre cas:

ansible all -i '10.0.3.248,' -m ping -u ubuntu 

dans cet exemple: modèle hôte est all, l'inventaire est une liste d'un seul hôte 10.0.3.248.
Remarque virgule à la fin - il est important, de cette façon Ansible comprendre qu'il s'agit d'un inventaire en ligne, et non le chemin vers le fichier.

+0

Merci pour votre réponse. C'est dommage que je ne puisse pas coller ici une capture d'écran. Je voudrais vous montrer que le gars qui dirige ce cours (chaîne tutoriaLinux YT) fait exactement ce que je demandais. Il entre: 10.0.3.248 -m ping -u ubuntu et obtient la réponse ping Ansible. –

+0

pour que cette commande exacte fonctionne, vous devez avoir un inventaire défini. –

+0

En outre, dans la section de modèle d'hôte de la documentation Ansible, il est dit: Il est également possible d'adresser un hôte spécifique ou un ensemble d'hôtes par nom: one.example.com one.example.com:two.example .com 192.0.2.50 192.0.2. * Ce qui, avec tout le respect dû, semble être dans le contraire de ce que vous avez écrit. –