Comment enregistrer une variable enregistrée dans un fichier? J'ai pris ceci dans le tutorial :
- hosts: web_servers
tasks:
- Shell: /usr/bin/foo
register: foo_result
ignore_errors: True
- Shell: /usr/bin/bar
when: foo_result.rc == 5
Comment enregistrer une variable foo_result
dans un fichier, par exemple foo_result.log
en utilisant ansible?
Vous pouvez utiliser le module copy
avec le paramètre content=
.
J'ai donné exactement la même réponse ici: Écrire une variable dans un fichier dans Ansible
Dans votre cas, il semble que vous souhaitiez que cette variable soit écrite dans un fichier journal local. Vous pouvez donc la combiner avec la notation local_action
:
- local_action: copy content={{ foo_result }} dest=/path/to/destination/file
J'utilise Ansible 1.9.4 et voici ce qui a fonctionné pour moi -
- local_action: copy content="{{ foo_result.stdout }}" dest="/path/to/destination/file"
Une action locale sera exécutée une fois pour chaque hôte distant (en parallèle). Si vous voulez un fichier unique par hôte, veillez à inclure Inventory_hostname dans le nom du fichier.
- local_action: copy content={{ foo_result }} dest=/path/to/destination/{{ inventory_hostname }}file
Si vous préférez un seul fichier avec toutes les informations de l'hôte, vous pouvez par exemple avoir une tâche série (ne pas ajouter en parallèle), puis ajouter un fichier au fichier avec un module (lineinfile est capable, ou peut diriger avec un shell commander)
- hosts: web_servers
serial: 1
tasks:
- local_action: lineinfile line={{ foo_result }} path=/path/to/destination/file
Alternativement, vous pouvez ajouter une deuxième pièce/rôle/tâche au livre de lecture qui ne fonctionne que sur l'hôte local. Accédez ensuite à la variable à partir de chacun des hôtes où la commande d’enregistrement a été exécutée dans un modèle Accès aux autres variables hôtes DocsModèle Docs du module
---
- hosts: all
tasks:
- name: Gather Version
debug:
msg: "The server Operating system is {{ ansible_distribution }} {{ ansible_distribution_major_version }}"
- name: Write Version
local_action: Shell echo "This is {{ ansible_distribution }} {{ ansible_distribution_major_version }}" >> /tmp/output