Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

398
Vistas
Guarda múltiples paquetes usando Ansible

Estoy tratando de mantener varios paquetes usando ansible-playbook pero no funciona conmigo.

Usando el código a continuación, contiene el primer paquete, luego lo suelta y luego contiene 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 del lado del servidor mientras se ejecuta el código ingrese la descripción de la imagen aquí la primera línea antes de ejecutar la segunda línea es la salida cuando se retuvo el primer paquete la tercera línea cuando se retuvo el segundo paquete y se detuvo

No entiendo por qué el comportamiento es así? y ¿cómo puedo tener varios paquetes a la vez usando ansible?

NOTA: Ya seguí las instrucciones de Anible doc https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html Gracias de antemano

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Ya por razones de rendimiento y recursos, proporcionar los paquetes como una lista podría ser mejor.

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

Sin embargo, su prueba informó

 dpkg: error: unexpected data after package and selection

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

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

que solo proporcionan información para un módulo. También asumo que el módulo debería funcionar with_items , pero parece que no es el caso debido a su pregunta.

De acuerdo con las páginas del manual, el comando dpkg en sí mismo parece ser capaz de manejar una lista de paquetes, pero se proporciona como un archivo de valores separados por caracteres.

 dpkg --set-selections < /tmp/pkg_list

con delimitador en el formato

 postgresql hold docker hold

Una solución sencilla 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

Es posible que deba implementar algunos errores y manejo de estado por sí mismo, es decir

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

Gracias a

  • Cómo hacer un script de shell multilínea en Ansible
over 4 years ago · Santiago Trujillo Denunciar

0

Qué pasa:

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

En mi caso, la salida del lado del servidor después de la ejecución fue la lista completa de paquetes.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda