Saya baru mengenal sesuatu yang mungkin dan bertanya-tanya bagaimana melakukannya karena yang berikut ini tidak berfungsi
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Di mana django_fixtures
variabel saya.
variables
command-line
command-line-arguments
ansible
ansible-playbook
Édouard Lopez
sumber
sumber
--extra-vars
akan menimpa variabel yang didefinisikan dalam buku pedoman.key=value
sintaksis ditafsirkan sebagai string . Gunakan format JSON jika Anda harus memasukkan apa pun yang seharusnya bukan string (Boolean, integer, float, daftar dll). Misalnya:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
Jawaban lain menyatakan bagaimana cara mengirim variabel baris perintah tetapi tidak cara mengaksesnya, jadi jika Anda melakukannya:
Dalam file yml Anda, Anda menetapkan ini untuk scoping variabel yang mungkin dilakukan dengan melakukan sesuatu seperti:
Alternatif untuk menggunakan args baris perintah adalah dengan memanfaatkan variabel lingkungan yang sudah didefinisikan dalam sesi Anda, Anda dapat referensi ini dalam file yml Anda yang mungkin seperti ini:
sumber
lookup('env', SOMETHING)
cocok dengan 12 faktor.version: {{ version }}
salah, seperti mendefinisikanversion
dengan sendirinya.sumber
-e
bendera adalah bentuk singkat--extra-vars
--extra-vars "@some_file.json"
--extra-vars
untuk meneruskan variabel yang tidak ada dalam file. Misalnya--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
Anda dapat menggunakan
--extra-vars
opsi ini. Lihat dokumensumber
Untuk beberapa alasan, tidak ada jawaban di atas yang berfungsi untuk saya. Karena saya perlu memberikan beberapa vars tambahan ke buku pedoman saya di Ansbile 2.2.0, inilah cara saya membuatnya berfungsi (perhatikan opsi -e sebelum setiap var):
sumber
-e
adalah bentuk pendek--extra-vars
-e
flag mereka sendiri-e "firstvar=false second_var=value2"
Dalam file yml Anda dapat menggunakannya seperti ini
Juga,
--extra-vars
dan-e
sama, Anda dapat menggunakan salah satunya.sumber
di sini variabel sedang digunakan bernama 'pathoftsfiles' dan 'folder'. Sekarang nilai untuk variabel ini dapat diberikan oleh perintah di bawah ini
Catatan: Jangan gunakan koma terbalik sambil meneruskan nilai ke variabel dalam perintah shell
sumber
sumber
Ini juga berfungsi untuk saya jika Anda ingin menggunakan variabel lingkungan shell:
ansible-playbook -i "localhost," ldap.yaml --extra-vars="LDAP_HOST={{ lookup('env', 'LDAP_HOST') }} clustername=mycluster env=dev LDAP_USERNAME={{ lookup('env', 'LDAP_USERNAME') }} LDAP_PASSWORD={{ lookup('env', 'LDAP_PASSWORD') }}"
sumber
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
Anda dapat menggunakan perintah di atas dalam buku pedoman di bawah ini.
sumber