Mengonversi string menjadi integer di Ansible Playbook
Aug 17 2020
Saya mendapatkan hitungan dari perintah PowerShell dan mendaftarkannya pada variabel. Saya harus menggunakan hitungan itu dalam kondisi kapan. Saya telah mengubahnya menjadi int sebelum menggunakannya dalam kondisi saat juga. Tetap saja tugas itu (pemberitahuan email) dilewati, meskipun jumlahnya 0 di sini. Adakah yang bisa memberi tahu saya apa yang saya lakukan salah di sini. Di bawah ini adalah kode yang saya jalankan
- name: Get message_count
shell: echo "{{ (output.stdout | from_json).MessageCount }}"
register: message_count #message_count is Zero here
delegate_to: localhost
- set_fact:
countt: "{{ message_count | int}}"
#coba mengonversi ke integer sebelum meneruskan ke kondisi menggunakan set_fact
- debug: var=countt
- name: send mail notification
mail:
host: abc.zzzz.net
port: 25
from: <[email protected]>
to:
- [email protected]
subject: Test mail sent from core server
body: Test mail sent from core server
delegate_to: localhost
when: countt==0
Jawaban
6 RomanSpiak Aug 17 2020 at 05:53
inilah yang saya lakukan untuk membuatnya berhasil:
---
- name: answer serverfault
hosts: all
become: yes
tasks:
- name: Get message_count
shell: ls /tmp/empty | wc -l
register: tmp_count
delegate_to: localhost
- debug: var=tmp_count.stdout
- name: do something else when tmp_count.stdout == 0
shell: echo "I am doing it"
delegate_to: localhost
when: tmp_count.stdout | int == 0
dan inilah hasil run playbook:
ripper@mini-ripper:~/Devel/ansible$ ansip ./test_playbook.yml -i localhost,
PLAY [answer serverfault] **************************************************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
[WARNING]: Platform linux on host localhost is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [localhost]
TASK [Get message_count] ******************************************************************************************************************************************************************************************
changed: [localhost -> localhost]
TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
"tmp_count.stdout": "0"
}
TASK [do something else when tmp_count.stdout == 0] ***************************************************************************************************************************************************************
changed: [localhost -> localhost]
PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
jadi untuk rekap:
- Anda harus memeriksa apakah variabel register bukanlah struktur yang lebih kompleks - biasanya memang demikian
- Anda tidak membutuhkan fakta khusus lainnya
- Anda perlu mengkonversi variabel tanpa menggunakan
{{ }}
diwhen
kondisi
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'