Apa pentingnya tugas Ansible yang melaporkan bahwa sesuatu telah berubah?

20

Saya memiliki tugas yang memeriksa apakah proses saya mendengarkan pada port 8080 dan hanya ketika kode keluar tidak nol, saya akan menjalankannya faildengan pesan.

Ketika layanan berjalan, ia melaporkan bahwa statusnya telah berubah. Saya ingin mengatakannya ok. Apa arti changedsebenarnya status dalam Ansible?

socgen hacker
sumber

Jawaban:

11

Apa pun yang bergantung pada sesuatu pada target akan mendapatkan status "berubah" ketika dieksekusi, bahkan jika itu hanya perintah shell untuk menggemakan sesuatu.

Untuk menekan status "diubah", Anda dapat menambahkan baris berikut ke tugas:

changed_when: false

Ini dan hal-hal lain yang relevan dicantumkan pada halaman dokumen yang memungkinkan ini .

Wurtel
sumber
27

Tugas yang mungkin dilakukan harus idempoten . Misalnya. jika tugas tidak mengubah apa-apa, itu harus kembali okbukan changed. Kebanyakan modul dan tugas bawaan sudah ada, tetapi untuk tugas-tugas seperti commanddan shellAnda perlu sedikit membantu.

Untuk tugas yang murni memeriksa dan tidak mengubah apa pun, Anda harus menambahkan:

changed_when: False
always_run: yes

Yang terakhir memungkinkan tugas dijalankan bahkan dalam mode cek .

Demi kelengkapan, tugas-tugas tersebut biasanya dikombinasikan dengan yang lain yang melakukan modifikasi aktual, misalnya:

- command: check command that returns true when no change needed
  register: result
  changed_when: False
  always_run: yes
- command: modify command
  when: result.rc != 0
pengguna1338062
sumber
2
jawaban ini harus diverifikasi
mastier