Apakah ada variabel yang memungkinkan yang memiliki jalur absolut ke pedoman yang mungkin saat ini dijalankan?
beberapa konteks:
Saya menjalankan / membuat skrip yang memungkinkan localhost
untuk mengonfigurasi buruh pelabuhan mysql dan ingin memasang volume data relatif ke skrip yang memungkinkan.
Sebagai contoh, katakanlah saya telah memeriksa repositori ke ~/branch1/
dan kemudian saya menjalankannya, ansible-playbook dev.yml
saya pikir itu harus menghemat volume ~/branch1/.docker_volume/
. Jika saya menjalankannya sejak ~/branch2
saat itu, volume harus dikonfigurasi ~/branch2/.docker_volume/
.
Jawaban:
Anda dapat menggunakan
playbook_dir
variabel.sumber
playbook_dir
variabel didokumentasikan. Bisakah Anda menunjukkan saya ke dokumentasinya? ATAU, dapatkah Anda menjelaskan bagaimana Anda bisa mengetahui tentang variabel ini?Sepertinya tidak ada variabel yang sesuai dengan keinginan Anda.
Namun, mengutip dokumen :
Bergantung pada penyiapan Anda, itu atau
$ pwd
solusi berbasis mungkin cukup.sumber
Sayangnya tidak ada. Faktanya jalur absolut agak tidak berarti (dan berpotensi membingungkan) dalam konteks bagaimana Ansible berjalan. Singkatnya, ketika Anda menjalankan playbook maka untuk setiap tugas Ansible secara fisik menyalin modul yang terkait dengan tugas tersebut ke direktori sementara pada mesin target dan kemudian memanggil modul dengan parameter yang diperlukan. Jadi jalur absolut pada mesin target hanyalah direktori sementara yang hanya berisi beberapa file sementara di dalamnya, dan bahkan tidak menyertakan pedoman lengkap. Selain itu, mengetahui jalur lengkap file di server Ansible sangat tidak berguna di mesin target kecuali jika Anda mereplikasi seluruh pohon direktori Ansible Anda pada target.
Untuk melihat semua variabel yang ditentukan oleh Ansible Anda cukup menjalankan perintah berikut :
Apa alasan Anda merasa perlu mengetahui jalur absolut menuju pedoman?
sumber
local_action
modul berarti ada kasus penggunaan yang sah untuk ini.Saya menggunakan pedoman seperti ini untuk menguji peran saya secara lokal:
tapi ini berhenti bekerja dengan Ansible v2.2.
Saya men-debug solusi yang disebutkan di atas
dan itu menghasilkan direktori home saya dan bukan "direktori kerja saat ini"
Saya menetap dengan
sesuai solusi di atas.
sumber
Tidak ada variabel build-in untuk tujuan ini, tetapi Anda selalu dapat menemukan path absolut playbook dengan perintah "pwd", dan mendaftarkan outputnya ke variabel.
Sekarang jalur tersebut tersedia dalam variabel playbook_path_output.stdout
sumber
pwd
ini tidak mengembalikan jalur skrip pedoman. Ini mengembalikan direktori proses saat ini (biasanyaansible-playbook
). Keduanya tidak harus sama dan bergantung pada cara yang tepat di mana ansible dipanggil.debug: var=ansible_env.PWD
(ini memberi saya direktori tempat saya mengeksekusiansible-playbook
di mesin lokal saya dan direktori home di server jarak jauh){{ lookup('env','PWD') }}