Ada tiga tugas berturut-turut berikut dalam buku pedoman:

  - debug:
     msg: "{{ cert_result.stdout }}"
    tags:
     - debug

  - name: Certdir rehash
    shell: "cacertdir_rehash /etc/openldap/cacerts/"
    when: cert_result|int == 1
    tags:
     - carehash

  - debug:
     msg: "{{ cert_result.stdout }}"
    tags:
     - debug

Saya tidak bisa menjelaskan mengapa "Certdir rehash" dilewati meskipun variabel cert_result disetel ke 1

Berikut output dari ketiga tugas tersebut selama dijalankan:

TASK [debug] ***************************************************************************************************************************************************************
Monday 24 May 2021  23:11:01 +0200 (0:00:02.514)       0:00:08.004 ************
ok: [192.168.1.110] => {
    "msg": "1"
}

TASK [Certdir rehash] ******************************************************************************************************************************************************
Monday 24 May 2021  23:11:01 +0200 (0:00:00.156)       0:00:08.160 ************
skipping: [192.168.1.110]

TASK [debug] ***************************************************************************************************************************************************************
Monday 24 May 2021  23:11:01 +0200 (0:00:00.156)       0:00:08.317 ************
ok: [192.168.1.110] => {
    "msg": "1"
}

Mengapa mungkin melewatkan tugas ini dengan when: cert_result|int == 1?

0
Chris 25 Mei 2021, 00:15

2 jawaban

Jawaban Terbaik

Anda menggunakan debug dengan cert_result.stdout tetapi untuk when Anda hanya menggunakan cert_result. Saya pikir Anda harus menggunakan yang sama seperti di bawah ini.

 - name: Certdir rehash
    shell: "cacertdir_rehash /etc/openldap/cacerts/"
    when: cert_result.stdout|int == 1
    tags:
     - carehash

Perhatikan perbedaannya saat Anda menggunakan cert_result.stdout vs cert_result, hanya "1" yang dikembalikan.

2
P.... 25 Mei 2021, 13:55

cert_result bukan bilangan bulat, ini adalah kamus yang berisi properti stdout yang ingin Anda ketik. Perhatikan bagaimana Anda memanggil cert_result.stdout di kedua tugas debug, tetapi tidak dalam satu tugas bersyarat yang dilewati.

Ubah when Anda menjadi cert_result.stdout | int == 1.

1
user3781737 24 Mei 2021, 21:28