Soy nuevo en Ansible, pero tengo que mantener un conjunto de libros de jugadas, que corresponden a los servicios que se configurarán en un entorno determinado. Se les debe asignar un puerto, certificados, etc. Esto da como resultado muchos archivos con listas de esencialmente siempre los mismos nombres y una asignación a ellos.
En muchos casos, creo que puedo reutilizar fácilmente el nombre_servicio como variable, pero al mapear a IP, puertos u otros identificadores numéricos aún no he encontrado una manera de asignarles de manera determinista diferentes números de una manera que sea reproducible, y preferiblemente sigue siendo el igual incluso cuando se agregan nuevos servicios. He considerado usar una base de datos SQLite para almacenar los servicios y generar los valores de sus identificadores, pero no tengo idea de cómo integrar eso con Ansible.
Supongo que asignar números de puerto crecientes no es algo completamente nuevo; es algo que muchos administradores de sistemas hacen a diario, por lo que tiene que haber alguna forma de hacerlo.
Editar : agregamos directamente los números de puerto, etc. de group_vars/all.yml
esta manera:
ports:
service1:1024
service2:1025
service3:1026
El inventario se genera automáticamente, ya que creamos cárceles adicionales (BSD) y depende de los roles que se ejecutarán.
group_vars
o agregando variables directamente en los archivos de inventario. Tampoco está claro cómo se genera su inventario.Respuestas:
Descargo de responsabilidad: no estoy usando Ansible.
Lo que haría es usar un número aleatorio "predecible". Según el documento de Ansible, puede generar el generador de números aleatorios:
Entonces, en su caso para un número de puerto (supongo que no tiene privilegios), elegiría una variable con algo como:
Máx. En 32767 para evitar conflictos con cualquier puerto iniciado por el cliente (consulte el puerto efímero para conocer el motivo).
fuente