Saya mencari cara untuk melakukan tugas ketika variabel yang mungkin tidak terdaftar / tidak ditentukan misalnya
-- name: some task
command: sed -n '5p' "{{app.dirs.includes}}/BUILD.info" | awk '{print $2}'
when: (! deployed_revision) AND ( !deployed_revision.stdout )
register: deployed_revision
ansible
ansible-playbook
sakhunzai
sumber
sumber
when: deployed_revision is not defined or deployed_revision.stdout is not defined or deployed_revision.stdout == ''
when: item.sudo is defined and item.sudo == true
when: foo is defined
(misalnya ini tidak berhasil:when: {{ foo }} is defined
when: ({{ foo }} in undefined)
{{ foo }}
). Ini bukan karena Ansible, tapi Yaml akan menafsirkannya sebagai objek. Jika Anda perlu memulai dengan ekspansi variabel, cukup"{{ foo }}"
letakkan semuanya dengan tanda kutip ganda (seperti ), untuk memaksa Yaml melihatnya sebagai string dan meneruskannya apa adanya ke Ansible.Sesuai dengan Ansible Version 2.5 terbaru, untuk memeriksa apakah suatu variabel telah ditentukan dan bergantung padanya jika Anda ingin menjalankan tugas apa pun, gunakan
undefined
kata kunci.Dokumentasi yang Mungkin
sumber
Dinyatakan dengan tegas, Anda harus memeriksa semua yang berikut: ditentukan, tidak kosong DAN tidak Tidak ada.
Untuk variabel "normal" itu membuat perbedaan jika ditentukan dan ditetapkan atau tidak ditetapkan. Lihat
foo
danbar
pada contoh di bawah ini. Keduanya ditentukan tetapi hanyafoo
ditetapkan.Di sisi lain, variabel terdaftar diatur ke hasil perintah yang sedang berjalan dan bervariasi dari modul ke modul. Mereka kebanyakan adalah struktur json. Anda mungkin harus memeriksa subelemen yang Anda minati. Lihat
xyz
danxyz.msg
pada contoh di bawah ini:sumber