Ansible'da artan port sayıları nasıl belirlenir ve tekrarlanabilir şekilde atanır?


12

Ansible'da yeniyim, ancak belirli bir ortamda kurulacak hizmetlere karşılık gelen bir dizi oyun kitabı tutmam gerekiyor. Bir bağlantı noktası, sertifikalar vb. Atanmaları gerekir. Bu, esasen her zaman aynı adların ve bunlara atanan listelerin bulunduğu birçok dosyayla sonuçlanır.

Birçok durumda, service_name değişkenini kolayca değişken olarak tekrar kullanabileceğimi düşünüyorum, ancak IP'lere, bağlantı noktalarına veya diğer sayısal tanımlayıcılara eşleme yaparken, bunlara henüz farklı sayıları tekrarlanabilir bir şekilde atamak için bir yol bulamadım ve tercihen yeni hizmetler eklendiğinde de aynıdır. Hizmetleri depolamak ve kimlikleri değerlerini oluşturmak için bir SQLite veritabanı kullanmayı düşündüm, ama Ansible ile nasıl entegre edeceğimi bilmiyorum.

Artan port numarası atamanın tamamen yeni bir şey olmadığını varsayıyorum; günlük bazda çok sayıda sistem yöneticisi bu yüzden bunu yapmanın bir yolu olmalı.

Düzenleme : Biz doğrudan bağlantı noktası numaralarını vb ekleyebilir group_vars/all.ymlböyle:

ports:
    service1:1024
    service2:1025
    service3:1026

Ek hapishaneler (BSD) oluşturduğumuz ve yürütülecek rollere bağlı olduğumuz için envanter otomatik olarak oluşturulur.


2
Muhtemelen hizmeti yine de envantere eklemeniz gerektiğinden, oraya manuel olarak belirli bir bağlantı noktası numarası eklemenizi engelleyen nedir? Veya envanteriniz otomatik olarak oluşturulursa, sorunu muhtemelen envanter oluşturma düzeyinde
çözmelisiniz

Ansible parçacıkları ekler misiniz? group_varsEnvanter dosyalarına doğrudan değişkenler kullanıp kullanmadığınız belli değil . Envanterinizin nasıl oluşturulduğu da net değil.
Woodland Hunter

HashiCorp Konsolosu gibi bir hizmet bulma aracı kullanmayı düşündünüz mü?
Foghorn CTO

Yanıtlar:


5

Feragatname: Ansible kullanmıyorum.

Yapacağım şey rastgele "tahmin edilebilir" bir sayı kullanmak. Ansible doc'a göre rastgele sayı üretecini ekebilirsiniz:

Ansible sürüm 2.3 itibariyle, rastgele sayı üretecini bir tohumdan başlatmak da mümkündür. Bu şekilde, rastgele ama aynı zamanda ikna edici sayılar oluşturabilirsiniz:

"{{59 | random (seed = envanter_anahtarı adı)}} * * * * root / script / from / cron"

Yani bir bağlantı noktası numarası için durumunda (ayrıcalıklı olduğunu varsayalım) gibi bir şey ile bir değişken için gitmek istiyorum:

port="{{ 32767 |random(start=1024,seed=service_name) }}"

İstemci tarafından başlatılan herhangi bir bağlantı noktasıyla çakışmadan kaçınmak için maksimum 32767'de ( Nedeni için Geçici bağlantı noktasına bakın ).


Bu, düşündüğüm iyi bir fikir, ancak artan kısmı imkansız kılıyor. Belirli bir liman aralığında mantıksal olarak ilişkili belirli hizmetlere sahip olmak büyük olasılıkla çok arzu edilir.
midor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.