Držet více balíčků pomocí Ansible

0

Otázka

Snažím se držet několika balíčků pomocí ansible-playbook, ale to u mě nefunguje.

Pomocí níže uvedeného kódu je držitelem první balíček, pak un-držet to drží druhý balíček

Tady je můj kód

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

Zde je výstup ze strany serveru, zatímco kód vykonávající enter image description here první řádek před spuštěním druhý řádek je výstup, když první balíček byl držet třetí řádek, když druhý balíček byl držen a je zastaven

Nechápu, proč chování je jako, že? a jak mám držet více balíčků najednou pomocí ansible?

POZNÁMKA: už jsem následoval instrukce od Anible doc https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Díky předem

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

Nejlepší odpověď

1

Již pro výkon a zdroje, důvody, poskytující balíčky jako seznam by mohl být lepší.

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

Nicméně, váš test hlášeny

dpkg: error: unexpected data after package and selection

Proto by to mohlo být to, že modul nemůže zpracovat seznamy, tak jsem se mrknul do zdroje dpkg_selections.py. To se zdá být jaksi jednoduché wrapper

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

které jen poskytují informace pro jeden modul. Také předpokládám, modul by měl fungovat with_items, ale zdá se, že není tento případ, protože vaše otázka.

Podle manuálové stránky, příkaz dpkg sám o sobě se zdá být schopen zvládnout seznam balíčků, ale za předpokladu, jako znak oddělené hodnoty souboru

dpkg --set-selections < /tmp/pkg_list

s oddělovačem ve formátu

postgresql hold
docker hold

Jednoduché řešení by mohlo pomoci ve vašem případě.

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

Možná budete muset provést některé chyby a stav vyřizování u sebe, tj.

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

Díky

2021-11-24 09:45:32

žádná syntaktická chyba ` "msg": "dpkg: chyba: neočekávaná data po balíčku a výběr na řádku 1", "rc": 2, "stderr": "dpkg: chyba: neočekávaná data po balíčku a výběr na řádku 1\n", "stderr_lines": [ "dpkg: chyba: neočekávaná data po balíčku a výběr na řádku 1" ], "stdout": "", "stdout_lines": [] `
Sara

@Sára, díky za poskytnutí výsledků zkoušek, aktualizoval jsem odpovídajícím způsobem odpovědět.
U880D

V jiných jazycích

Tato stránka je v jiných jazycích

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