110 votes

Comment exécuter Ansible sans spécifier l'inventaire mais l'hôte directement ?

Je veux exécuter Ansible en Python sans spécifier le fichier d'inventaire par (ANSIBLE_HOST) mais juste par :

ansible.run.Runner(
  module_name='ping',
  host='www.google.com'
)

En fait, je peux faire cela en tissu facilement mais je me demande comment le faire en Python. D'autre part, la documentation de l'API Ansible pour Python n'est pas vraiment complète.

0voto

Mahadev Points 51

Une solution très simple d'après ce que j'ai compris, je m'excuse si c'est une distraction.

Voici les 3 principales étapes à franchir,

  1. options de la ligne de commande
  2. Ce qui doit être exposé dans le playbook.yml
  3. Ce qu'il dit

1.options de la ligne de commande

ansible-playbook -l "nom-hôte" <playbook.yml>

Veuillez noter que le nom d'hôte est le nom d'hôte du noeud.

2. ce qui doit être exposé dans le playbook.yml

- hosts: webservers
  tasks:
    - debug:
        msg: "{{ ansible_ssh_host }}"
      when: inventory_hostname in groups['webservers']

3. ce qu'il dit ? Jetez un coup d'œil :)

TASK [debug] ***********************************************************************************************************************************************************
Thursday 10 December 2020  13:01:07 +0530 (0:00:03.153)       0:00:03.363 *****
ok: [node1] => {
    "msg": "192.168.1.186"
}

C'est ainsi que nous pouvons exécuter des tâches sur des nœuds spécifiques à l'aide de la fonction --limit ou -l option

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X