Dețin mai multe pachete folosind Ansiblu

0

Problema

Am încercat să dețină mai multe pachete folosind ansiblu-playbook dar nu merge cu mine.

Folosind codul de mai jos deține primul pachet, apoi țineți-l apoi țineți-al doilea pachet

Aici este codul meu

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

Aici este de ieșire de la partea de server, în timp ce codul de executare enter image description here prima linie înainte de a executa cea de-a doua linie este de ieșire atunci când primul pachet a fost apăsat cea de-a treia linie, atunci când cel de-al doilea pachet a fost reținut și este oprit

Nu înțeleg de ce comportamentul este așa? și cum pot deține mai multe pachete la un moment dat, folosind ansiblu?

NOTĂ: deja i-am urmat instrucțiunile de Anible doc https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Multumesc anticipat

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

Cel mai bun răspuns

1

Deja pentru performanță și resurse motive, oferind pachete ca lista ar putea fi mai bine.

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

Cu toate acestea, testul a raportat

dpkg: error: unexpected data after package and selection

Prin urmare, ar putea fi faptul că modulul nu poate manipula liste, așa că m-am uitat in sursa dpkg_selections.py. Se pare a fi o cumva înveliș simplu

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

care oferă doar informații pentru un modul. Am asuma, de asemenea, module ar trebui să funcționeze with_items, dar pare să nu fie cazul pentru că întrebarea dumneavoastră.

Conform paginile man, comanda dpkg în sine pare să fie în măsură să se ocupe de un pachet de listă, dar cu condiția ca personaj fișier cu valori separate

dpkg --set-selections < /tmp/pkg_list

cu delimitator în format

postgresql hold
docker hold

O soluție simplă ar putea ajuta în cazul dumneavoastră.

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

Posibil să aveți nevoie să pună în aplicare unele de eroare și de stare manipulare de unul singur, și anume

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

Datorită

2021-11-24 09:45:32

nici o eroare de sintaxă ` "msg": "dpkg: eroare: date neașteptate după pachet și selecție la linia 1", "rc": 2, "stderr": "dpkg: eroare: date neașteptate după pachet și selecție la linia 1\n", "stderr_lines": [ "dpkg: eroare: date neașteptate după pachet și selecție la linia 1" ], "stdout": "", "stdout_lines": [] `
Sara

@Sara, multumesc pentru furnizarea rezultatelor testelor, am actualizat răspunde în mod corespunzător.
U880D

În alte limbi

Această pagină este în alte limbi

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