2017-10-20 10 views
-2

Bonjour les gars, j'ai une expérience très peu de travail avec ansible, mais aujourd'hui mon patron m'a dit que je devrais écrire ansible playbook pour vérifier l'espace disque dans les machines de production nous avons un 15 machines et je veux entrez chacun d'entre eux, puis exécutez la commande 'df -h', puis envoyez la sortie à l'e-mail. pouvez-vous me donner un modèle de ce playook? comme çaproblème avec écriture ansible playbook

host <ip address> 
command <df -h> 
SendToEmail <emails...> 

merci et passez une bonne journée!

+0

Avez-vous essayé même d'écrire quelque chose? –

+0

Avez-vous besoin d'écrire un playbook, ou pouvez-vous utiliser simplement le module shell? c'est-à-dire que -m shell -a 'df -h' all (ajoute des ips machine à/etc/ansible/hosts). Ensuite, utilisez la sortie de ce que vous aimez. – Jesse

+0

Non, mais c'est une tâche très importante –

Répondre

1

Okay Je vais essayer de vous donner un endroit pour commencer.

Fondamentalement, vous devez générer une clé ssh sur le serveur sur lequel vous allez exécuter Ansible from (considérez ceci comme votre serveur maître ou serveur de contrôle).

Copiez ensuite votre clé ssh sur chacun des 15 serveurs sur lesquels vous souhaitez exécuter une commande en utilisant Ansible. (ssh-copy-id). Sauf si vous aimez taper votre nom d'utilisateur et mot de passe 15 fois chaque fois que vous exécutez la commande ci-dessous. Une fois cette tâche terminée: 1) Editez le fichier hosts Ansible dans/etc/ansible (/ etc/ansible/hosts) et ajoutez les adresses IP sous un bloc. Le fichier devrait ressembler à ceci:

[servers] 
ip1.xxx.xxx.xxx 
ip2.xxx.xxx.xxx 

2) Exécutez la commande

ansible -m shell -a 'df -h' all 

Cela vous lancer, vous pouvez utiliser cette sortie pour envoyer un e-mail en utilisant une sorte de client de messagerie.

Attention, ce n'est pas un playbook. Vous devriez lire sur la façon de créer un livre de jeu si vous souhaitez le faire de cette façon.

+0

Merci pour votre aide! –

0

-Créez un fichier hôte Ansible comme indiqué par @Jesse.

-Exemple PlayBook:

- name: Test 
    hosts: servers 
    gather_facts: false 
    tasks: 
     - name: Test 
     command: df -h 
     register: output 
     - debug: msg='{{output.stdout_lines}} | Mailx -s "{{ ansible_ssh_host }} Info space" [email protected]' 
     - name: Send mail with mailx 
     command: '{{output.stdout_lines}} | Mailx -s "{{ ansible_ssh_host }} Info space" [email protected]' 

-Exécuter avec: ansible-playbook playbook.yml

run avec -Ou si ansible fichier hôte a un autre chemin: ansible-playbook playbook.yml -i inventory.yml