web-dev-qa-db-fra.com

Écrire une variable dans un fichier dans Ansible

Je tire JSON via le module URI et je veux écrire le contenu reçu dans un fichier. Je peux obtenir le contenu et le sortir vers le débogueur. Je sais donc que le contenu a été reçu, mais je ne connais pas les meilleures pratiques pour écrire des fichiers.

86
Keith Adler

Vous pouvez utiliser le module copy avec le paramètre content:

- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file

La documentation ici: module de copie

162
Ramon de la Fuente

Sauf si vous écrivez de très petits fichiers, vous devriez probablement utiliser templates .

Exemple:

- name: copy upstart script
  template: 
    src: myCompany-service.conf.j2 
    dest: "/etc/init/myCompany-service.conf"
8
Janus Troelsen

Basé sur la réponse de Ramon, je rencontre une erreur. Le problème des espaces dans le JSON que j'ai essayé d'écrire a été corrigé en modifiant la tâche dans le livre de jeu de la manière suivante:

- copy:
    content: "{{ your_json_feed }}"
    dest: "/path/to/destination/file"

Pour l'instant, je ne sais pas pourquoi cela était nécessaire. Ma meilleure hypothèse est que cela a quelque chose à voir avec la façon dont les variables sont remplacées dans Ansible et le fichier résultant est analysé.

6
Tobias Kremer