Je suis nouveau sur Ansible, mais je dois maintenir un ensemble de playbooks, qui correspondent à des services à configurer dans un environnement donné. Il faut leur affecter un port, des certificats, etc.
Dans de nombreux cas, je pense que je peux facilement réutiliser le nom_service en tant que variable, mais lors du mappage vers des adresses IP, des ports ou d'autres identificateurs numériques, je n'ai pas encore trouvé de moyen de leur affecter de manière déterministe différents numéros d'une manière qui est reproductible, et reste de préférence le même lorsque de nouveaux services sont ajoutés. J'ai envisagé d'utiliser une base de données SQLite pour stocker les services à partir de et pour générer les valeurs à partir de leurs identifiants, mais je ne sais pas comment intégrer cela à Ansible.
Je suppose que l'attribution de numéros de port croissants n'est pas quelque chose de tout à fait nouveau; c'est quelque chose que beaucoup d'administrateurs système doivent accomplir au quotidien, donc il doit y avoir un moyen de le faire.
Edit : Nous ajoutons directement les numéros de port, etc., group_vars/all.yml
comme ceci:
ports:
service1:1024
service2:1025
service3:1026
L'inventaire est généré automatiquement, car nous créons des prisons supplémentaires (BSD) et dépend des rôles qui seront exécutés.
group_vars
ou ajoutez des variables directement dans les fichiers d'inventaire. Il est également difficile de savoir comment votre inventaire est généré.Réponses:
Avertissement: je n'utilise pas Ansible.
Ce que je ferais, c'est utiliser un nombre aléatoire "prévisible". Selon Ansible doc, vous pouvez amorcer le générateur de nombres aléatoires:
Donc, dans votre cas, pour un numéro de port (je suppose sans privilège), je choisirais une variable avec quelque chose comme:
Max à 32767 pour éviter les conflits avec tout port initié par le client (voir Port éphémère pour la raison).
la source