Ce tool-uri de automation/mass orchestration/deployment ati folosi/combina pt un proiect cu o infrastructura de 20000+ Linux instances: Ansible, Salt, Puppet, Terraform, Chef, Docker, Kube, Foreman, Gitlab pipelines/Jenkins etc

Ce tool-uri de automation/mass orchestration/deployment ati folosi/combina pt un proiect cu o infrastructura de 20000+ Linux instances: Ansible, Salt, Puppet, Terraform, Chef, Docker, Kube, Gitlab pipelines/ Jenkins etc

Presupunem ca infrastructura va fi oarecum diversificata: bare-metal servers + aws, gcp, vmware, openstack, kvm pt virtualizare

Jenkins e standardul cam la toate firmele mari.

Ce am văzut interesant e pulumi.

Problemele tale vor fi următoarele: unde stochezi secrets (vault?), utilizatorii și permisiunile, scalarea (Jenkins nu scaleaza bine cu job-uri lungi, e mai ok pentru CI/CD, pentru automatizare e horror), docker și kubernetes sigur îți trebuie, nu e așa simplu dacă vrei să începi de la bare metal și nu cloud (gcp/aws/azure)

Probabil o combinatie intre mai multe: gen docker + kube + ansible(aici au vault pt passwords)

Realist pe toate :slight_smile:
Serios, 20K instante e o marime uriasa.
Pentru infra as code o sa ai nevoie de terraform, pentru provisioning de (pick-one 'Ansible 'Salt 'Chef 'Puppet), Docker in unele locuri, K8S in altele, un build system (Jenkins prob la marimea asta si nevoile de customizare).
Plus, o groaza de alte tool-uri la nivel de infra, de la monitorizare, logare, etc.

Zi-ne mai multe detalii 'tho. Suna interesant.

2 Likes

O mica parte a infrastructurii va fi intr-un public cloud (gen aws, gcp ) restul on premises (tot ce inseamna bare-metal, virtualizare, severe infra etc).
De asemenea, totata infrastructura, mai putin ce e in public cloud, va fi izolata (serverele nu au access in internet, deci repos, pipelines etc vor trebui rulate cu tool-uri configurate local, dar se va realiza comunicarea cu celelate parti ale infrastructurii din toate datacenterele de pe glob)
Asadar fara tool-uri de configurare online, gen gitlab.com, bitbicket, bamboo, trvavis, rundeck, etc
Secrets pribabil in hasicorp, users + perms probabil ldap + ad, dar asta conteaza mai putin.
Mai mult intereseaza partea de tool-uri best suited pt mass deployment, configiration si management a serverelor (cum ar fi inventory pt toate) si tools pt ci cd pipelines.
Am vazut ca pana acum toata lumea recomanda jenkins, iar din cate stiu jenkins e mai mult potrivit pt chestii java, iar aici nu atingem nimic de java.

La ce ma refer mai exact…spre ex, vreau sa fac deploy si autoconfigurare pt 100 de VM dintr-un singur click pe un pipeline (doar adaug hostnamurile intr-un fisier si restul e automat configurat in functie de scopul final pt acele servere)

Poate OpenStack e ceva ce te-ar putea interesa?
E un “tool” pentru private clouds, care ofera acelasi gen de interfete de compute / networking / etc. ca si cloud-urile publice.
Mai mult nu stiu din nefericire, si n-am experienta cu el decat din auzite.

Dar în general , la mărimea asta, ai o echipa (consistenta) de infra, care oferă servicii altor echipe. Echipele pot face apoi Terraform peste un OpenStack/AWS/GCP, sau deploymenturile lor separate cu tool-urile lor (unii Jenkins, alții TeamCity poate). Poate sa fie eterogenitate mare sau un stack foarte uniform, depinde de cum decide și evoluează compania.


Dar dude. Chiar sunt curios … ce fel de proiect aveti si ce vreti sa faceti cu el. Si in ce timeline? Cf publicității, Netflix are 100K mașini în AWS. Nu sunteți acolo, dar pe aproape :slight_smile:

1 Like

Momentan infrastructura exista, cred ca s-ar putea sa fie si mai mare (nu am access in toata), doar ca este destul de veche si multi pasi in deploy/configurare necesita interventie manuala. Inca se face research pt cele mai optime tool-uri ce ar putea fi folosite pt deployment/orchestration/configuration bla bla bla si o eventuala migrare catre noile solutii. Solutiile de virtualizare inca nu sunt decise (poate Openstack ,poate VMware, poate amandoua, poate niciuna). Terraform e optimizat masiv pt AWS si, desi e cloud agnostic, pentru restul solutiilor de virtualizare pare destul de instabil, buggy si cu o plaja de module out of the box destul de putine (tfstate pt infrastructura on premises exclus in S3). Ca CI/CD pipeline stiu ca gitlab + runners este destul de stabil dar poate ca mai exista si altceva acolo in afara de gitlab dar cu functionalitate si performante bune.

1 Like

Daca infrastructura e asa complicata poti sugera sa se incerce mai multe solutii concomitent de mai multe echipe si sa se aleaga dupa cateva luni solutia cea mai potrivita.

Da, eventual asta se va face in urma procesului de research si testing, dar nu procesul de decizie e ceea ce interesaza acum cat mai mult sugestii de tool-uri/procese care ar fi cel mai adecvate, eventual cat mai flexibile, rapide si configurabile cu putinta pentru o asemenea infrastructura. Un tool ce utilieaza mai mult de 50% pentru configurare folosing interfete web clar iti ofera o limitare si securitate scazuta fata de cele ce pot fi configurate din yml sau cli (nu stiu daca e cel mai potrivit, dar as folosi ca exemplu Ansible vs Chef sau plain docker vs Portainer/Rancher etc). Bineineteles, exclus orice tool de configurare/deployment/orchestration online decat pt partea din public cloud doar daca nu exista alternative.

1 Like

Iar infrastructura nu este f complicata ci mai degraba f stufoasa! :slight_smile: Configurarile infrastructurii (OS side, services, DNS, authentication etc sunt deja existente iar o parte din ele trebuie doar portate/adaptate in IAC.

Nu am lucrat la o scara asa mare dar ma gandesc ca la un proiect de complexitatea asta pentru partea de deploy ar merita un tool custom care s-ar putea face relativ usor pe ssh fara sa intervii pe toate acele masini (eu am facut ceva similar la scara mai mica pentru deploy aplicatii Go).

https://www.terraform.io/docs/providers/openstack/index.html

Terraform ”vorbeste” OpenStack.

De ce amesteci conceptele vm si docker, aveti asa o combinatie azi?
Finalitatea e un private cloud sau bare metal?

Cate arome diferite ai pt base image in care trebuie sa pui codul?

Jenkins sau Bamboo sau GitLab e totuna. Jenkins e de-a dreptul oldschool

1 Like