Di tools ve ne sono tanti: server, strumenti per watch, database, ide, etc…
per non rendere tutto dispersivo, elenco solo quelli principali e che per un motivo
o per un altro ho scelto di non inserire nella sezione developer.
La maggior parte del lavoro e’ nettamente piu comodo svolgerla con Vagrant
. In ogni caso per quanto concerne la parte GUI, ho riscontrato dei problemi con osx
e li ho risolti grazie a questo articolo
increase-mac-os-virtual-machine-screen-resolution-virtualbox-vmware-player
dove nello specifico ho inserito
VBoxManage.exe setextradata "vagrant-box-osx_default_1472223119403_66496" VBoxInternal2/EfiGopMode 5
avere skills su vagrant e’ fondamentale se voglio avere un lavoro portabile e condivisibile con altri sviluppatori.
La documentazione ufficiale di Vagrant e’ fatta benissimo, pertanto non voglio estendere troppo questo argomento, ma reputo utile spiegare quali sezioni attualmente sono importanti:
provisioning > chef-solo
, come strumento di automazione ( al posto di shell script manuale )synced folders
networking
, almeno il forwarding per sviluppo in localevagrant share
, mi basta anche getting started > share
per pubblicare temporaneamente onlinemulti-machine
, per runnare un cluster, oppure avere due macchine separate: un web host su una e database separato sull’altra
(questo aiuta a capire l’importanza della scalabilita’ dei servizi)Dei plguin utili risultano essere
Chef
(scaricare il client di Chef
nominato: ChefDK
)hostmanager
, receip per automatismi sull’hostomnibus
, per controllare la versione di Chef
installatavbguest
, to autoupdate virtualbox guest additionsIn generale tenere presente che questi sistemi aiutano anche a gestire Cluster o Gruppi di Macchine con una che funge da Server(amministratore), pertanto risultano assai complessi e non e’ bene studiarli, se si vogliono solo integrare con vagrant.
In ogni caso un operazione molto bella che alcuni di loro svolgono e’ il push
, per fare in modo che l’amministratore aggiorni in automatico i sottoserver: questa ad esempio potrebbe essere utile per me, usando il server di sviluppo/stage per testare il codice e una volta avuto l’ok svolgere un aggiornamento (push) sul server stabile; in questo caso il provisioning mi aiuterebbe perche’ tutti i comandi li salverei su files che poi versionerei con Git.
Consiglio un ripasso leggendo https://docs.chef.io/chef_overview.html
Per capirci, a livello lessicale gioca sul concetto di cuginare: il libro di cucina (cookbook
) e’ un insieme di ricette (receip
),
cosi’ come un sistema automatizzato funzionante e’ un insieme di singole utility;
in pratica il cookbook
e’ un insieme eterogeneo di receip
.
Ad esempio potrei avere il ricettario server
, composto da 2 automatismi: uno per installare apache
(con gia’ configurazioni personalizzate)
e l’altro per installare nodejs
con server configurato.
la piattaforma di automazione consta di piu parti che schematizzo velocemente
workstation
, tipicamente il pc sul quale lavora chi sviluppa il server, e che contiene un software in grado di svolgere operazioni di controllo e push dei dati su di essoserver
che mi funziona da cloud: chi sviluppa salva li tutti i suoi dati per renderli disponibili al mondo (tipo repository git)nodes
qualsiasi macchina che sfrutta chef e che ne viene automatizzataclient
il software che reperisce i dati del server, e che opera su un nodoIl supermakelet chef e’ dove vengono raccolti tutti i ricettari.
La cosa interessante e’ che e’ gestibile con Ruby
Tutorial
CONSIGLIO questo tutorial e’ il migliore per iniziare!!
vedi vagrant-ansible-quickstart-tutorial
Visto che l’ho provato per il Mac
ed effettivamente e’ piuttosto semplice, almeno a livello base, posso suggerire queste letture:
register
, ma e’ di poco contoBox interessanti: