Saya menggunakan modul ec2 dengan ansible-playbook
saya ingin mengatur variabel ke konten file. Begini cara saya melakukannya.
- Var dengan nama file
- tugas shell ke
cat
file - gunakan hasil dari
cat
untuk lolos ke modul ec2.
Contoh isi playbook saya.
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 }}"
Saya berasumsi ada cara yang lebih mudah untuk melakukan ini, tetapi saya tidak dapat menemukannya saat mencari dokumen Ansible.
ansible
ansible-playbook
TesterJeff
sumber
sumber
Jawaban:
Anda dapat menggunakan pencarian di Ansible untuk mendapatkan konten file, mis
Peringatan: Pencarian ini akan bekerja dengan file lokal, bukan file jarak jauh.
Berikut contoh lengkap dari dokumen :
sumber
cat
perintah dalam contoh @ TesterJeff dijalankan pada mesin jarak jauh.Anda dapat menggunakan modul slurp untuk mengambil file dari host jarak jauh: (Terima kasih kepada @mlissner karena telah menyarankannya)
sumber
Anda dapat menggunakan modul fetch untuk menyalin file dari host jarak jauh ke lokal, dan modul lookup untuk membaca konten file yang diambil.
sumber
pencarian hanya berfungsi di localhost. Jika Anda ingin mengambil variabel dari variabel file yang dibuat dari jarak jauh menggunakan include_vars:
{{ varfile }}
. Isi{{ varfile }}
harus kamus bentuk{"key":"value"}
, Anda akan menemukan kemungkinan memberi Anda masalah jika Anda memasukkan spasi setelah titik dua.sumber
include_vars
bekerja secara lokal di mesin kontrol, bukan dengan file pada target.