2014-11-04 23 views
18

Kayıtlı bir Değişkeni bir dosyaya nasıl kaydederim? Ben tutorial bu aldı:Ansible - Kayıtlı değişkeni dosyaya kaydet

- hosts: web_servers 

    tasks: 

    - shell: /usr/bin/foo 
     register: foo_result 
     ignore_errors: True 

    - shell: /usr/bin/bar 
     when: foo_result.rc == 5 

Nasıl bir dosyaya foo_result değişkeni mesela kurtaracak foo_result.log ansible kullanarak mı?

+0

10) erişebilirsiniz. Daha iyi bir çözüm bulmayı deneyip anlayamadığınızı merak ediyorum çünkü geçici bir dosya oluşturmaya özen gösteren bir çözüm görmüyorum. Dosya adını kodlamak zorunda kalmak problem olurdu. – sorin

+0

Değişkenleri, yoklama yolunda kullanabilirsiniz, örneğin: '-local_action: copy content = {{var}} dest =/path/to/{{var}}. Log', ama daha iyi bulmuyorum çözüm henüz/veya başka birine ihtiyacım yoktu. –

+2

Olası kopyası [Ansible içindeki bir dosyaya yazma değişkeni] (http://stackoverflow.com/questions/26638180/write-variable-to-a-file-in-ansible) – techraf

cevap

39

content= parametresiyle copy modülünü kullanabilirsiniz.

Burada aynı cevabı verdi: Senin durumunda Write variable to a file in Ansible

, yerel bir günlük dosyası yazılır bu değişkeni istediğiniz gibi görünüyor, bu yüzden local_action gösterimi ile birleştirmek olabilir:

- local_action: copy content={{ foo_result }} dest=/path/to/destination/file 
+0

Tam olarak aradığım şey. Bir şekilde önyargı sorusu karşısında tökezlemedim. Tekrar yanıtlamak için Thanx –

+0

N.P. Bunu destekleyen kopya modülünü bulmakta oldukça mutluydum, bu yüzden "dosyaya nasıl kaydederim" soruları gözüme yakalanma eğilimindedir :-) –

7

Ben yanıtlayıcı '1.9.4 kullanıyorum ve bu benim için çalıştı budur -

bir yerel eylem her uzak ana için bir kere çalışacak
- local_action: copy content="{{ foo_result.stdout }}" dest="/path/to/destination/file" 
2

(paralel). Her ana bilgisayar için benzersiz bir dosya istiyorsanız, envanter_hostname dosyasını dosya adının bir parçası olarak seçtiğinizden emin olun. Eğer tüm konağın bilgileri içeren tek bir dosya istiyorsanız

- local_action: copy content={{ foo_result }} dest=/path/to/destination/{{ inventory_hostname }}file 

, yalnızca yerel ana karşı çalışan oyun metnini ikinci oynatma/rol/görev eklemek gerekecek. Daha sonra, kayıt komutunun bir şablonun içinde çalıştırıldığı her bir değişkene, bir kayıtta (Access Other Hosts Variables DocsTemplate Module Docs