Jestem nowym użytkownikiem Ansible, ale muszę utrzymywać zestaw podręczników, które odpowiadają usługom konfigurowanym w danym środowisku. Należy im przypisać port, certyfikaty itp. W rezultacie powstaje wiele plików z listami o zasadniczo zawsze takich samych nazwach i przypisaniem do nich.
W wielu przypadkach myślę, że mogę z łatwością ponownie użyć nazwy usługi jako zmiennej, ale podczas mapowania na adresy IP, porty lub inne identyfikatory numeryczne nie znalazłem jeszcze sposobu na deterministyczne przypisanie im różnych liczb w sposób, który jest odtwarzalny i najlepiej pozostaje to samo nawet po dodaniu nowych usług. Rozważałem użycie bazy danych SQLite do przechowywania usług i generowania wartości na podstawie ich identyfikatorów, ale nie mam pojęcia, jak je zintegrować z Ansible.
Zakładam, że przypisywanie rosnących numerów portów nie jest czymś zupełnie nowym; jest to coś, do czego wielu administratorów na co dzień, więc musi być jakiś sposób, aby to zrobić.
Edycja : dodajemy bezpośrednio numery portów itp. W group_vars/all.yml
następujący sposób:
ports:
service1:1024
service2:1025
service3:1026
Inwentaryzacja jest generowana automatycznie, ponieważ tworzymy dodatkowe więzienia (BSD) i zależy od ról, które zostaną wykonane.
group_vars
lub dodajesz zmienne bezpośrednio do plików ekwipunku. Nie jest również jasne, w jaki sposób tworzony jest ekwipunek.Odpowiedzi:
Oświadczenie: Nie używam Ansible.
Chciałbym użyć losowej liczby „przewidywalnej”. Według dokumentu Ansible możesz uruchomić generator liczb losowych:
Więc w twoim przypadku dla numeru portu (zakładam nieuprzywilejowany) wybrałbym zmienną z czymś takim jak:
Maks. 32767, aby uniknąć kolizji z dowolnym portem zainicjowanym przez klienta ( powód - patrz efemeryczny port ).
źródło