Soru Ansible: Değişkeni dosya içeriğine ayarla


Ec2 modülünü kullanıyorum ansible-playbook Bir dosyanın içeriğine bir değişken ayarlamak istiyorum. İşte şu anda bunu yapıyorum.

  1. Dosya adıyla var
  2. kabuk görevi cat dosya
  3. sonucunu kullan cat ec2 modülüne geçmek için.

Benim kitabımın örnek içeriği.

vars:
  amazon_linux_ami: "ami-fb8e9292"
  user_data_file: "base-ami-userdata.sh"
tasks:
- name: user_data_contents
  shell: cat {{ user_data_file }}
  register: user_data_action
- name: launch ec2-instance
  local_action:
...
  user_data: "{{ user_data_action.stdout }}"

Bunu yapmanın daha kolay bir yolu olduğunu farz ediyorum, ancak Ansible dokümanlar ararken bunu bulamadım.


56
2018-06-02 21:50


Menşei


Bu benim için çalıştı. Arama (boru) komutunda değişkenlerin nasıl yerleştirileceğini bulamadım. - ericson.cepeda


Cevaplar:


Kullanabilirsiniz aramaları Bir dosyanın içeriğini almak için Ansible'da, ör.

user_data: "{{ lookup('file', user_data_file) }}"

İşte bir Dokümanlardan tam örnek:

- hosts: all
  vars:
     contents: "{{ lookup('file', '/etc/foo.txt') }}"
  tasks:
     - debug: msg="the value of foo.txt is {{ contents }}"

60
2018-06-03 11:55



Aramayı yerel olarak çalıştırdığınızı unutmayın. cat @ TesterJeff örneğinde komut, uzak makinede çalışıyor. - Alex Dupuy
Uzak aramalar için slurp ve get modülleri kontrol edin - Marco Ferrari


Kullanabilirsiniz getirme modülü uzak ana bilgisayarlardan yerel dosyalara kopyalamak arama modülü getirilen dosyaların içeriğini okumak için.


5
2017-09-09 13:35



Tamamen yeniyim, yeniyim ama neden bunun için slurp kullanmıyorsun? Bir dosyanın içeriğini çekmek için uzaktan kumanda üzerinde çalışıyor gibi görünüyor. - mlissner


Lookup sadece localhost üzerinde çalışır. Eğer değişkenler dosyasından değişkenler almak istiyorsanız, include_vars'ı uzaktan kullanın: {{ varfile }} . İçeriği {{ varfile }} formun bir sözlük olmalı {"key":"value"}Eğer kolondan sonra bir boşluk eklerseniz, ansible size sorun verir.


2
2018-05-02 15:15



Bu saçmalık. include_vars Yerel olarak kontrol makinesinde çalışır, hedefteki dosyalarla değil. - techraf