Mantenha vários pacotes usando o Ansible

0

Pergunta

Eu estou tentando manter vários pacotes usando o ansible-playbook, mas ele não funciona comigo.

Usando o código abaixo, ele mantém o primeiro pacote, em seguida, onu-segure-o, em seguida, segure o segundo pacote

Aqui é o meu código

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

Aqui está a saída do lado do servidor, enquanto o código de execução enter image description here a primeira linha antes de executar a segunda linha é a saída quando o primeiro pacote foi segurar a terceira linha quando o segundo pacote foi realizada e ele está parado

Eu não entendo por que o comportamento é como o que? e como posso ter vários pacotes de uma vez usando o ansible?

NOTA: eu já segui as instruções, Anible doc https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Obrigado antecipadamente

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

Melhor resposta

1

Já para o desempenho do recurso e razões, fornecendo a lista de pacotes como poderia ser melhor.

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

No entanto, o seu teste relatados

dpkg: error: unexpected data after package and selection

Portanto, pode ser que o módulo não pode lidar com listas, então eu tinha um olhar para a fonte dpkg_selections.py. Ele parece ser, de alguma forma, um wrapper simples

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

que apenas fornecem informações para um módulo. Eu também suponha que o módulo do trabalho with_items, mas parece não ser o caso devido a sua pergunta.

De acordo com páginas de manual, o comando dpkg em si parece ser capaz de lidar com uma lista de pacotes, mas como personagem arquivo de valor separado

dpkg --set-selections < /tmp/pkg_list

com delimitador no formato

postgresql hold
docker hold

Uma solução simples pode ajudar no seu caso.

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

Talvez seja necessário implementar algum erro de status e manuseio por si mesmo, i.é.

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

Graças a

2021-11-24 09:45:32

nenhum erro de sintaxe ` "msg": "dpkg: erro: dados inesperados após o pacote e seleção na linha 1", "rc": 2, "stderr": "dpkg: erro: dados inesperados após o pacote e seleção na linha 1\n", "stderr_lines": [ "dpkg: erro: dados inesperados após o pacote e seleção na linha 1" ], "stdout": "", "stdout_lines": [] `
Sara

@Sara, obrigado por fornecer resultados do teste, eu atualizei a responder em conformidade.
U880D

Em outros idiomas

Esta página está em outros idiomas

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