Podržte viacerých balíkov pomocou Ansible

0

Otázka

Snažím sa držať viacero balíkov pomocou ansible-playbook, ale nefunguje to so mnou.

Pomocou nižšie kód je držiteľom prvého balíka potom osn-držte ho a potom podržte druhý balík

Tu je môj kód

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

Tu je výstup zo servera strane, zatiaľ čo kód vykonávajúci enter image description here prvý riadok pred vykonaním druhý riadok je výstup po prvý balík bol pridržte v treťom riadku, keď druhý balík sa uskutočnilo, a to je stoped

Nechápem, prečo správanie je ako, že? a ako môžem držať viac balíčkov naraz pomocou ansible?

POZNÁMKA: už som nasledovala inštrukcia z Anible doc https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Vďaka vopred

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

Najlepšiu odpoveď

1

Už pre výkon zdrojov a dôvodov, ktoré poskytujú balíky ako zoznam môže byť lepší.

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

Však, váš test uviesť

dpkg: error: unexpected data after package and selection

Preto môže byť to, že modul nemôžu zvládnuť zoznamy, takže som musel pozrieť do zdroja dpkg_selections.py. To sa zdá byť nejako jednoduchý wrapper

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

čo práve poskytovať informácie pre jeden modul. Som tiež predpokladať, modul by mal fungovať with_items,, ale zdá sa, že to nie je tento prípad, pretože na vašu otázku.

Podľa muž stránkach, príkazov dpkg sám sa zdá byť schopná zvládnuť zoznam balíkov, ale za predpokladu, ako znak oddelené hodnota súboru

dpkg --set-selections < /tmp/pkg_list

s oddeľovač vo formáte

postgresql hold
docker hold

Jednoduché riešenie by mohlo pomôcť vo vašom prípade.

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

Možno budete musieť implementovať niektoré chyby a stav manipulácia sami, t. j.

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

Vďaka

2021-11-24 09:45:32

č syntax error ` "msg": "dpkg: chyba: neočakávané údaje po package a výber v 1. riadku", "rc": 2, "stderr": "dpkg: chyba: neočakávané údaje po package a výber v 1. riadku\n", "stderr_lines": [ "dpkg: chyba: neočakávané údaje po package a výber v 1. riadku" ], "stdout": "", "stdout_lines": [] `
Sara

@Sara, vďaka za poskytovanie výsledky testu, aktualizoval som odpoveď zodpovedajúcim spôsobom.
U880D

V iných jazykoch

Táto stránka je v iných jazykoch

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