Przechowywać kilka pakietów za pomocą Ansible

0

Pytanie

Staram się przechowywać kilka pakietów za pomocą ansible-playbook, ale ze mną to nie działa.

Wykorzystując poniższy kod, on utrzymuje pierwszy pakiet, a następnie zdejmij go, a następnie przytrzymaj drugi pakiet

Oto mój kod

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

Oto wniosek ze strony serwera podczas wykonywania kodu enter image description here pierwszy wiersz przed wykonaniem drugi wiersz-to wniosek, gdy został zatrzymany pierwszy pakiet trzeci wiersz, gdy został zatrzymany drugi pakiet, a on zatrzymany

Nie rozumiem, dlaczego takie zachowanie? i jak mogę przechowywać kilka pakietów na raz, za pomocą ansible?

UWAGA: już po instrukcje z oficjalnego dokumentu https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Z góry dziękuję

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

Najlepsza odpowiedź

1

Już ze względu na wydajność i zasobów dostarczanie pakietów w postaci listy może być lepiej.

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

Jednak, twój test poinformował

dpkg: error: unexpected data after package and selection

Dlatego, być może, moduł nie może obsługiwać listy, więc zajrzałem w źródłowy koddpkg_selections.py. Wygląda na to, że to jakaś prosta owinąć

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

które zawierają informacje tylko dla jednego modułu. Zakładam również, że moduł powinien działać with_items, ale wygląda na to, że to nie z powodu twojego pytania.

Zgodnie z man-stron, zespół dpkg sam w sobie wydaje się, jest w stanie obsłużyć lista pakietów, ale jest dostępny w postaci pliku wartości oddzielonych znakami

dpkg --set-selections < /tmp/pkg_list

z separatorem w formacie

postgresql hold
docker hold

W twoim przypadku może pomóc proste obejście.

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

Być może, musisz samodzielnie przeprowadzić obróbkę niektórych błędów i stanów, tj.

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

Dzięki

2021-11-24 09:45:32

nie błąd składni ` "MSG": "z dpkg: błąd: nieoczekiwany danych po opakowania i selekcji w wierszu 1", "RK": 2, "wyjście": "z dpkg: błąd: nieoczekiwany danych po opakowania i selekcji w wierszu 1\n", "stderr_lines": [ "dpkg: błąd: nieoczekiwany danych po opakowania i selekcji w wierszu 1" ], "wyjście": "", "stdout_lines": [] `
Sara

@Saro, dziękuję za udostępnienie wyników badań, jestem odpowiednio zaktualizowane odpowiedź.
U880D

W innych językach

Ta strona jest w innych językach

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