Article original Publié le : 03 octobre 2021 Mise a jour le : – |
Le module Fetch permet de récupérer des fichiers distants, très utile par exemple pour une demande de log quand une machine n’est pas derrière une solution Kibana, ElasticSearch
- En général pour un debug on fait un scp
- Pour une demande ponctuelle d’un dev on fait un plabook
- Pour une demande récurrente, ou de manière générale on met la tache dans un Rundeck
L’inventaire
1 |
$ vim inventories/hosts |
1 2 |
[vm] node1 |
Le platybook
1 |
$ vim playbooks/playbook.yml |
1 2 3 4 5 |
- name: role_fetch hosts: vm become: yes roles: - role_fetch |
Les tasks
Deux taches avec deux tags différents pour récupérer un ou plusieurs fichiers et quelques options
1 |
$ vim role_fetch/tasks/main.yml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
--- # tasks file for roles_role_fetch - name: Récupérer un fichier fetch: src: "/var/log/application/application.log" dest: "/tmp/log_appli_{{ ansible_hostname }}/" # fail_on_missing: no flat: yes tags: 1_fichier - name: Récupérer plusieurs fichiers fetch: src: "/var/log/application/{{ item }}" dest: "/tmp/log_appli_{{ ansible_hostname }}/" # fail_on_missing: no flat: yes loop: "{{ item_fichiers }}" tags: x_fichiers |
fail_on_missing: Si le fichier est absent pour ne pas qu’Ansible ne génère d’erreur ou s’arrête
flat: Pour bypasser la copie de l’arborescence complète du fichier source
{{ ansible_hostname }}: On appelle le fact pour ajouter le nom de la machine au répertoire
Les variables
1 |
$ vim defaults/main.yml |
1 2 3 |
item_fichiers: - application.log - access_application.log |
L’exécution
1 |
$ ansible-playbook -i inventories playbooks/playbook.yml |
L’exécution avec un tag
1 |
$ ansible-playbook -i inventories playbooks/playbook.yml -tags "nom_du_tag" |
L’arborescence
1 |
$ tree |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
. ├── inventories │ ├── group_vars │ ├── hosts │ └── host_vars ├── playbooks │ └── playbook.yml ├── Readme.md └── role_fetch ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── README.md ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml |
Rundeck
Créer un job avec un workflow, ajouter les permissions et acl,
les devs peuvent ensuite récupérer les logs à n’importe quel moment.
Source
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/fetch_module.html