Donc, je n'arrive pas à contourner ce problème frustrant et je me demande si quelqu'un ici a des idées. J'ai un modèle Jinja qui crache une longue liste d'adresses IP dans un format de fichier de configuration. Cela fonctionne bien. Le problème est que lorsque j'ai un client avec plus d'une adresse IP stockée à son nom, le modèle, plutôt que d'enregistrer cette nouvelle adresse IP sur une nouvelle ligne, ajoute simplement le deuxième IP sur le premier et met une ligne avec deux Adresses IP jointes ensemble. Ce n'est bien sûr pas idéal. Voici le modèle Jinja J'utilise:Utilisation des variables YAML listées pour les templates de Jinja
{% for cust, config in customers.items()%}
{% raw %}#{% endraw %} {{ cust }} - {{ config['type'] }}
-A INPUT -s {{ config['ipaddr'] }} -p tcp -m state --state NEW -m tcp --dport {{config['accept']}} ACCEPT
{% endfor %}
Et voici les variables fichier à partir de laquelle le modèle prend les valeurs:
BTG-VELOCITY:
type: PBSTP
accept: 32500
connect: 33500
ipaddr:
196.167.203.65
192.167.203.65
subtype: OUTBOUND
GFAM:
type: SPOT
accept: 32501
connect: 33501
ipaddr: 192.168.563.20
subtype: AMOUNT
GUANFABANK:
type: SPOT
accept: 32503
connect: 33503
ipaddr: 192.168.563.40
subtype: STACKED
MAINBANK:
type: FWD
accept: 32504
connect: 33504
ipaddr: 192.167.203.02
subtype: TIERED
TEST-BANK:
type: PBSTP
accept: 32506
connect: 33506
ipaddr: 192.167.203.92
subtype: INBOUND
SESH:
type: SPOT
accept: 32508
connect: 33508
ipaddr: 192.167.203.63
subtype: TIERED
Le problème est avec le client BTG-VELOCITY ' . Le modèle recrache une ligne comme celui-ci
-A INPUT -s 192.168.563.20 196.168.563.20 -p tcp -m state --state NEW -m tcp --dport 32501 ACCEPT
Plutôt que les deux lignes désirées comme celui-ci:
-A INPUT -s 192.168.563.20 -p tcp -m state --state NEW -m tcp --dport 32501 ACCEPT
-A INPUT -s 196.168.563.20 -p tcp -m state --state NEW -m tcp --dport 32501 ACCEPT
Pourquoi ne pas ajouter une boucle imbriquée pour itérer sur des adresses IP? –
J'ai essayé mais j'ai peut-être mal fait. Quand je l'ai fait, j'ai fini par faire un énorme fichier de sortie avec beaucoup trop d'entrées et chaque client ayant la même valeur d'adresse IP sur chaque ligne. Est-il possible que vous puissiez suggérer comment le faire correctement? –