Contener varios paquetes con Ansible

0

Pregunta

Estoy tratando de mantener múltiples paquetes con ansible-playbook, pero no funciona conmigo.

Utilizando el código de abajo, que tiene el primer paquete, a continuación, la onu, a continuación, mantenga pulsado el segundo paquete

Aquí está mi código

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

Aquí está la salida desde el lado del servidor, mientras que el código de ejecución de enter image description here la primera línea antes de la ejecución de la segunda línea es la salida, cuando el primer paquete se mantenga la tercera línea cuando el segundo paquete se llevó a cabo y es detuve

No entiendo por qué el comportamiento es como que? y ¿cómo puedo realizar varios paquetes en un tiempo utilizando ansible?

NOTA: ya he seguido las instrucciones de Anible doc https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Gracias de antemano

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

Mejor respuesta

1

Ya para el rendimiento y los recursos razones, ofreciendo los paquetes de la lista podría ser mejor.

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

Sin embargo, su prueba informado

dpkg: error: unexpected data after package and selection

Por lo tanto, podría ser que el módulo no puede manejar listas, así que eché un vistazo a la fuente dpkg_selections.py. Parece ser un simple envoltorio de alguna manera

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

que acaba de proporcionar información para un módulo. También asumo el módulo de trabajo with_itemspero parece no ser el caso porque de tu pregunta.

Según el hombre de las páginas, el comando dpkg sí parece ser capaz de manejar una lista de paquetes, pero siempre como personaje de archivo de valores separados

dpkg --set-selections < /tmp/pkg_list

con delimitador en el formato

postgresql hold
docker hold

Una simple solución podría ayudar en su caso.

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

Usted puede necesitar para implementar algunas de error y de estado de la manipulación por sí mismo, es decir,

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

Gracias a

2021-11-24 09:45:32

ningún error de sintaxis ` "msg": "dpkg: error: error de datos inesperados después de paquete y selección en línea de 1", "rc": 2, "stderr": "dpkg: error: error de datos inesperados después de paquete y selección en línea de 1\n", "stderr_lines": [ "dpkg: error: error de datos inesperados después de paquete y selección en línea de 1" ], "stdout": "", "stdout_lines": [] `
Sara

@Sara, gracias por proporcionar los resultados de la prueba, he actualizado la respuesta en consecuencia.
U880D

En otros idiomas

Esta página está en otros idiomas

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