Skripta kao skripta je CITKA, sto je bitnije od dobro napisana. Da pises if i error handling, meni je overkill. Iskreno, meni bi ovo bilo dovoljno.
Zamerke da treba error handling jesu na mestu, ali za ovo ti ne treba ni bash ni python, vec je mnogo bolje da koristis neki gotov alat tipa ansible. Dobar ti je uvod i u python, sasvim je dovoljan za ovakve primene, sve moze da se instalira kroz njega a laksi ti je nego cisto python.
Zamerka da nema na masini python i nije neka, a ansible ima tu prednost da ga pravis da radi remote: Napravis playbook, izvrsis ga na SVOJOJ masini, a on instalira remote masinu. Samim tim, requirements nisu problem, stavise manje su za server - jer ne treba nista, sve se izvrsava na jednom mestu, i odlicno je za rad. Ja imam nekih zamerki ali ja sam prvo poceo ansible i i dalje mi je sjajan alat za brdo stvari.
Vrlo mi je korisno što je savetovano da radim error handling. Za ovu skriptu je totalno nebitno. Ali trebaće :)
Ovu skriptu sam zamislio da mi služi za kompletnu instalaciju Jenkins servera od početka, bez da čuvam neki Image/AMI. "Jeftinije je" odnosno manje mesta zauzima. Tako da mi je error handling u ovom slučaju možda nepotreban, jer bi skripta trebalo da radi na identičnom okruženju, i ako prvi put prođe kad je napišem, onda bi trebalo svaki put. Mislim da je sasvim dovoljno ovo
Dovoljno je samo da stavi
Jer ako mi je nešto krenulo loše, popraviću pa ću ispočetka pustiti skriptu (verujem da postoji bolji način :) )
Znam da tome u stvari služi Ansible/Puppet/Chef, i htedoh prvo da ispišem par skripti za instalaciju sledećih servera koji su mi potrebni čisto vežbanja radi. A onda ću i Ansible koji je koliko vidim agentless i koristi SSH. Ova druga dva nekom drugom prilikom...
Naviknes se lako na firewalld, veruj mi ume da bude i preglednije nego iptables. Samo se radi o zonama koje su vezane za konekcije i tu otvaras portove. Generalno ako ces RHEL/Fedoru/CentOS da koristis, moraces da se naviknes na fwd.
...samba npr, to mi je najveci utisak ostavilo, 6h sam se mucio), i na kraju je SVE proradilo kada sam ugasio selinux. ...
Btw, kakav ti je plan za dalje? Sta bi zeleo da postignes sa bashom i pythonom? Ako te interesuje bas skripting i pravljenje konkretnih, vrlo funkcionalnih stvari uz sto manje muke, python je za to. Bash je vise za generalni rad sa linuxom nego bilo sta drugo. Vecina nas koristi bash skripte kako se ne bi na svakoj masini maltretirali satima da instaliramo isti sw :) Meni dobro dodje ako moram da povlacim nesto iz cmdl uz awk i filtriram podatke, ako izradjujem bekend servis ili nesto slicno, sto treba da radi i neki monitoring masine.
Za firewalld hoću sigurno. Video sam na više mesta da je "lakše i brže" korišćenje.
Sa bashom/pajtonom nemam neki posebni plan. Vidim po raznim konkursima da je potrebno za kojekakve pozicije, pa bar da naučim malo više od osnova. Pajton još ne kapiram kako bih mogao da iskoristim, odnosno ne vidim ni jedan "use case". Što se tiče bash-a sviđa mi se što EC2 instance uz pomoć User Data odnosno bootstrapping-a mogu da instaliram i podesim kompletan server za par minuta, i isključim bez razmišljanja "ko će sledeći put ponovo da podešava". To je valjda neki vid uštede.
Znam da tome služi Ansible (i Terraform za ceo infrastrukturni setup), ali eto htedoh prvo shell zbog ovog saveta sa druge teme
Razgovarao sam sa čovekom koji je napisao ovu knjigu:
https://www.oreilly.com/library/view/the-devops-20/9781785289194/
(inače knjiga je prilično dobra, vredi da se pročita).
Njegovo mišljenje o alatima za CI/CD - batali to sve. Mogu da ti pomognu, ali je PRVA stvar da znaš shell programiranje. ...
... je ekvivalent onome "stavi samo chmod 777 meni tako radi".
Da sa kolegama php programerima sam se često sretao sa ovim savetom na produkciji, i svestan sam koliko je katastrofalan, zato sam radije izguglao neko rešenje i primenio (iako pojma nemam još uvek šta radi :) )
A inače sam se i ja ubio pola sata proveravajući nginx conf fajlove da skontam što mi ne radi proxy pass ili čak i obična index.html stranica. Ne znam tool kao apachectl sa kojim mogu da proverim da li su included svi conf fajlovi, pa se svodilo na to da napravim namerno grešku u sites-available conf fajlu i okinem nginx -t. Tek posle pola sata sam se setio da isključim selinux.
[Ovu poruku je menjao CoyoteKG dana 17.12.2018. u 09:50 GMT+1]