6

Jeśli używasz narzędzia do automatyzacji, takiego jak Ansible, aby zbudować stos infrastruktury w chmurze (np. AWS), czy wystarczy mieć narzędzie do automatyzacji i budować stos w oddzielnych regionach/VPC w chmurze, czy też ma to więcej sensu? twoje narzędzie do automatyzacji i skrypty lokalnie (własne centrum danych/maszyna)?Ansible - Automatyka zdalna czy lokalna?

Obie wydają się być używane, ale zastanawiałem się tylko, czy istnieje standard najlepszych praktyk.

Odpowiedz

4

W przeciwieństwie do xeraagood answer uruchamiamy jak najwięcej z wnętrza AWS.

rzeczywistych korzyści możemy uzyskać z tego jest to, że pozwala nam korzystać scentralizowane Jenkins serwerów uruchamianych Ansible (i Terraform w naszym przypadku do rzeczywistej rezerw AWS z ansibl tylko używane do konfigurowania instancji EC2 i uruchomić playbooks ad-hoc zadania administracyjne).

Możemy wtedy kontrolować dostęp do serwerów Jenkins za pośrednictwem poświadczeń i/lub grup bezpieczeństwa/NACL.

Robiąc to w ten sposób, możemy kontrolować liczbę osób, które mają jakąś formę referencji, która pozwoliłaby im zbudować wszystko, co im się podoba i/lub zniszczyć wszystko, co im się podoba.

Najlepiej byłoby, gdybyśmy podawali tylko dane uwierzytelniające serwerom Jenkins za pośrednictwem instancji IAM EC2, ale jeszcze nie jesteśmy na miejscu.

Jedną z pozytywnych rzeczy jest to, że nasi fani z pierwszej linii/drugiej linii, którzy używają systemu Windows prawie wyłącznie, mogą uzyskać dostęp do ładnego interfejsu GUI do zarządzania obiektami w środku nocy i wykonywania zadań Jenkins, do których mają dostęp. do uruchomienia, które spowoduje takie rzeczy jak restart serwera/usługi lub nawet przebudowanie części VPC.

Mamy oddzielne konto "deweloperów", do którego programiści mają dostęp z własnych maszyn. Właśnie tutaj budujemy naszą bazę kodu, zanim opracujemy bazę kodu Ansible (i Terraform), zanim baza kodu zostanie użyta w naszym teście i środowiska produkcyjne.

+0

. Jest pewien średni poziom, który chciałbym dodać. Nadal możesz uruchomić wszystko od scentralizowanego Jenkinsa, wykorzystując w ten sposób zalety, które opisałeś, ale zamiast jenkinsów z uruchomionymi pilotami, możesz uruchamiać polecenia SSH na komputerach docelowych, które uruchamiają lokalne playbooks (możliwe, że używasz ansibli-pull, dzięki czemu otrzymujesz świeżą kopię za każdym razem). W ten sposób uzyskasz to, co najlepsze z obu światów. –

4

Prowadzimy wszystko lokalnie.

Plus

  • Testujemy wszystkie playbooks (i naszego oprogramowania) na lokalnym polu Vagrant, więc musimy go lokalnie w każdym razie.
  • Nie potrzebujemy dodatkowych urządzeń. I powinieneś skonfigurować je również za pomocą Ansible, więc przynajmniej ktoś musi mieć zainstalowany Ansaly. W przeciwnym razie masz problem z kurczakiem lub jajkiem.
  • Prawdopodobnie trochę szybciej, ponieważ masz mniejszą chmurę sieci.

Minus

  • Każdy potrzebuje lokalnej instalacji ansibl, która będzie działać tylko w systemach Linux i Mac, ale nie na Windows (może być tylko cel).

Inne względy

  • Dla naszych użytkowników systemu Windows, użytkownik Linux/Mac tworzy maszynę wirtualną z ansibl (wszystko ustawione) i eksportuje go jako pole podstawy. Następnie użytkownicy systemu Windows mogą zaimportować to okno podstawowe w programie Vagrant i tylko trzeba go uruchomić - wszystko jest już zainstalowane. Obejmuje to funkcję Ansible, dzięki czemu możesz uruchomić wszystko z VM.
  • Na początku planowaliśmy umieścić Ansible na naszych serwerach NAT (dla prywatnych podsieci VPC). Ale wtedy potrzebowalibyśmy jedną konfigurację, aby skonfigurować VPC, grupy bezpieczeństwa i wystąpienia NAT, i jeszcze jedną, aby uruchomić na instancjach NAT i skonfigurować resztę infrastruktury. Jednak nie widzieliśmy w tym żadnej realnej korzyści, więc teraz mamy wszystko na miejscu.

PS: Nie jestem pewien, czy istnieje ostateczna odpowiedź, ale to są nasze argumenty.

+0

Dobra odpowiedź. Czy z ciekawości zastanawiasz się, czy baza kodu jest uruchamiana w środowisku deweloperskim przed uruchomieniem? A może po prostu nalegasz, aby ludzie zarządzali lokalnie vs Vagrant przed uruchomieniem go na serwerach na żywo? – ydaetskcoR

+0

Mamy pracę Jenkinsa, wykonującą suchy bieg i ansibli-lint przeciw każdemu naciśnięciu. W przeciwnym razie odpowiedzialność spoczywa na programistach, ale mamy tylko 5 z dostępem do Ansible i 8 ogólnie – xeraa