Ansible kullanarak birden çok paket tutun

0

Soru

Ansible-playbook kullanarak birden fazla paket tutmaya çalışıyorum ancak benimle çalışmıyor.

Aşağıdaki kodu kullanarak ilk paketi tutar, sonra un-hold sonra ikinci paketi tutar

İşte benim kodum

- name: Prevent packages from being upgraded
  dpkg_selections:
    name: "{{ item }}"
    selection: hold
  with_items:
    - postgresql
    - docker

İşte kod yürütülürken sunucu tarafındaki çıktı enter image description here çalıştırmadan önceki ilk satır ikinci satır, ilk paketin tutulduğu çıktıdır ikinci paket tutulduğunda ve durdurulduğunda üçüncü satır

Davranışların neden böyle olduğunu anlamıyorum? ve ansible kullanarak aynı anda birden fazla paketi nasıl tutabilirim?

NOT: Anible doc'tan gelen talimatları zaten takip ettim https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Şimdiden teşekkür ederiz

ansible linux
2021-11-23 19:10:07
1

En iyi cevabı

1

Zaten performans ve kaynak nedenleriyle, paketleri liste olarak sunmak daha iyi olabilir.

- name: Prevent packages from being upgraded
  dpkg_selections:
    name: ['postgresql', 'docker']
    selection: hold

Ancak, testiniz rapor edildi

dpkg: error: unexpected data after package and selection

Bu nedenle, modülün listeleri işleyememesi olabilir, bu yüzden kaynağa bir göz attımdpkg_selections.py. Bir şekilde basit bir sarıcı gibi görünüyor

module.run_command([dpkg, '--set-selections'], data="%s %s" % (name, selection), check_rc=True)

sadece bir modül için bilgi sağlar. Ayrıca modülün çalışması gerektiğini varsayıyorum with_items ama sorunuzdan dolayı durum böyle değil gibi görünüyor.

Man sayfalarına göre, komut dpkg kendisi bir paket listesini işleyebiliyor gibi görünüyor, ancak karakterle ayrılmış değer dosyası olarak sağlanıyor

dpkg --set-selections < /tmp/pkg_list

sınırlayıcı ile biçiminde

postgresql hold
docker hold

Basit bir geçici çözüm sizin durumunuzda yardımcı olabilir.

- name: Prevent packages from being upgraded
  shell:
    cmd: |
      dpkg --set-selections << EOF
      postgresql hold
      docker hold
      EOF
    warn: false
    register: result

Bazı hata ve durum işlemlerini kendiniz uygulamanız gerekebilir, örn.

changed_when: result.rc ...
failed_when: result.rc ...

Sayesinde

2021-11-24 09:45:32

hayır sözdizimi hatası`, “msg”: “dpkg: hata: beklenmeyen veri sonra paketi ve seçim at line 1", “rc”: 2, “stderr”: “dpkg: hata: beklenmeyen veri sonra paketi ve seçim at line 1\n”, “stderr_lines”: [ “dpkg: hata: beklenmeyen veri sonra paketi ve seçim at line 1”, “stdout”: “”, “stdout_lines”: [] `
Sara

@ Sara, test sonuçlarını sağladığınız için teşekkürler, cevabı buna göre güncelledim.
U880D

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................