Tenere più pacchetti utilizzando Ansible

0

Domanda

Sto cercando di tenere più pacchetti utilizzando ansible-playbook, ma non funziona con me.

Utilizzando il seguente codice che contiene il primo pacchetto di onu-tenere quindi premuto il secondo pacchetto

Ecco il mio codice

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

Qui è l'uscita dal lato server, mentre l'esecuzione di codice enter image description here la prima riga prima di eseguire la seconda linea è l'uscita quando il primo pacchetto è stato premuto la terza linea, quando il secondo pacchetto è svolta e si è fermato

Non capisco perché il comportamento è simile? e come posso tenere più pacchetti alla volta, utilizzando ansible?

NOTA: ho già seguito le istruzioni da Anible doc https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Grazie in anticipo

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

Migliore risposta

1

Già per le prestazioni e le risorse motivi, che fornisce i pacchetti elenco potrebbe essere migliore.

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

Tuttavia, il test ha riferito

dpkg: error: unexpected data after package and selection

Quindi potrebbe essere che il modulo non in grado di gestire le liste, così ho dato un'occhiata in origine dpkg_selections.py. Sembra di essere in un certo qual modo semplice wrapper

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

che solo fornire informazioni per un solo modulo. Ho anche assumere il modulo dovrebbe funzionare with_itemsma sembra non essere il caso perché della tua domanda.

Secondo le pagine man, il comando dpkg sembra essere in grado di gestire una lista di pacchetti, ma come personaggio un file con valori separati da

dpkg --set-selections < /tmp/pkg_list

con delimitatore nel formato

postgresql hold
docker hold

Una soluzione semplice potrebbe aiutare nel tuo caso.

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

Potrebbe essere necessario implementare alcune di errore e di stato di manipolazione da soli, cioè

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

Grazie a

2021-11-24 09:45:32

nessun errore di sintassi ` “msg”: “dpkg: errore: errore imprevisto dati dopo il pacchetto e selezione at line 1", “rc”: 2, “stderr”: “dpkg: errore: errore imprevisto dati dopo il pacchetto e selezione at line 1\n”, “stderr_lines”: [ “dpkg: errore: errore imprevisto dati dopo il pacchetto e selezione at line 1” ], “stdout”: “”, “stdout_lines”: [] `
Sara

@Sara, grazie per la fornitura di risultati di test, ho aggiornato la risposta di conseguenza.
U880D

In altre lingue

Questa pagina è in altre lingue

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