es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El complemento de Azure Ansible no puede generar inventario si las máquinas virtuales no están etiquetadas.

Entonces me estoy encontrando con un comportamiento bastante extraño aquí, mientras que no estoy seguro si estoy abordando esto de manera incorrecta o si hay una brecha no tan importante en el complemento azure_rm para Ansible.

Quiero construir un inventario dinámico y solo incluir ciertas VM, no todas las VM en mi cuenta de Azure. Por lo tanto, filtro según ciertas etiquetas, pero el complemento solo proporciona opciones de exclude_host_filters, por lo que tengo que filtrar todas las VM que no se ajusten a la etiqueta deseada, lo cual ya me parece extraño:

plugin: azure_rm
include_vm_resource_groups:
  - my-rg
auth_source: auto
keyed_groups:
  - key: tags.Function
exclude_host_filters:
- tags.Environment != 'DEV'

Cuando intento crear el inventario y mi cuenta de Azure tiene una VM sin ninguna etiqueta, en realidad obtengo el siguiente error y un inventario vacío:

[ADVERTENCIA]: * Error al analizar /home/azureuser/.../.../ansible/etc/azure_rm.yml con el complemento automático: Error al evaluar la condición de filtro
  'tags.Environment != 'DEV'' para el host myinstance_4dcc: 'el objeto del diccionario' no tiene el atributo 'Environment'

tecnicamente correcto, la instancia de hecho no tiene esta etiqueta. Sin embargo, no entiendo por qué solo hay la opción de proporcionar un filtro de exclusión. El complemento aws_ec2 lo aborda de manera diferente, lo cual tiene mucho más sentido para mí: es un filtro de inclusión, por lo que se toman en cuenta todas las instancias de EC2 que cumplan con los criterios explícitamente, el resto se ignora.

Sin embargo, este complemento hará que mis ejecuciones de Ansible fallen cada vez que alguien cree cualquier VM no relacionada en mi cuenta y olvide las etiquetas, siento que esto no puede ser correcto. ¿Alguien ha enfrentado este problema antes o tiene una manera de abordarlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Filtrado de Máquinas Virtuales de Azure en el Inventario de Ansible

    Como experto en TI especializado en Azure y Ansible, entiendo su preocupación con el complemento azure_rm para Ansible, que solo proporciona una opción exclude_host_filters al construir un inventario dinámico. El complemento filtra todas las MV que no cumplen con la etiqueta deseada, lo que puede causar problemas al crear MV no relacionadas sin etiquetas.

    El complemento aws_ec2 maneja esto de manera diferente, con un filtro de inclusión que incluye explícitamente todas las instancias de EC2 que cumplan con los criterios en el inventario, ignorando el resto. Por lo tanto, el complemento azure_rm se podría beneficiar de una opción de filtro de inclusión para crear un inventario dinámico e incluir ciertas MV basadas en etiquetas específicas.

    Aunque el complemento azure_rm podría generar un error si una MV no tiene la etiqueta deseada, técnicamente es correcto. Sin embargo, esto podría dar lugar a un inventario vacío y a ejecuciones de Ansible fallidas. Una forma de resolver este problema es asegurarse de que todas las MV tengan etiquetas que coincidan con los criterios de filtro, o podría cambiar a usar la API de Azure directamente en lugar de utilizar el complemento azure_rm.

    En resumen, el complemento azure_rm para Ansible tiene opciones de filtrado limitadas actualmente, pero con la opción de filtro de inclusión, puede ayudar a crear un inventario dinámico más específico y útil en Azure.

Comments are closed.