Overview


Usiamo un meccanismo di CI/CD per cui:




Setup iniziale dell'ambiente sulla propria postazione di lavoro


Installazione git-crypt


Va installato git-crypt

Per i sistemi RHEL compliant esiste in EPEL (quindi 'yum install git-crypt')

Se non c'e' il pacchetto per la propria distribuzione, si puo' installare da sorgente (dipendenze: gcc-c++ e openssl-devel):



git clone https://github.com/AGWA/git-crypt.git
make
make install PREFIX=/usr/local



Download del repo git



mkdir ~/Workdir
cd ~/Workdir
git clone https://github.com/CloudPadovana/puppet_epoxy.git




Scaricare la chiave per il crypting dei file params.pp


Scarico da cld-config il file /var/puppet/KeyRepoEpoxyTesting e copiarlo ad esempio in ~/Workdir



Modifica del codice puppet per la cloud di test

Mi accerto che la copia locale del mio repo (branch testing) sia aggiornata:


$ cd ~/Workdir/puppet_epoxy/


$ git checkout testing
Switched to branch 'testing'
Your branch is up to date with 'origin/testing'.

$ git pull
Already up to date.


Se serve modificare anche un file params.pp, farne prima il decrypt (decrypt che avviene solo locamente: sul repo i file restano cryptati):


git crypt unlock ~/Workdir/KeyRepoEpoxyTesting



A questo punto faccio le modifiche sul branch testing, che poi committo e pusho:


 # fai modifiche 
git add <files modificati> 
git commit -m "Messaggio" <files modificati> 
git push


Modifica del codice puppet per la cloud di produzione



Se devo riportare le  modifiche da testing a main (quindi per metterle in produzione): 


Vado in:  https://github.com/CloudPadovana/puppet_epoxy → Pull requests e poi "New pull requests"

Seleziono in alto "main" come base e "testing" come compare e clicco su "Create pull request"




Una volta che la PR sara' approvata, le modifiche finiranno effettivamente in main



Sincronizzazione tra main e testing


In generale quello che e' su testing prima o poi deve finire anche su main (dopo la fase di testing delle modifiche fatte sulla cloud di test).

La "sincronizzazione tra main e testing va gestita "a mano" (v. sopra)


Per vedere i file che differiscono tra main e testing:


$ git diff --stat main..testing 
 .gitattributes                              | 3 +++
 README.md                                   | 1 -
 compute_epoxy/manifests/neutron.pp          | 1 +
 compute_epoxy/manifests/nova.pp             | 1 +
 controller_epoxy/manifests/configure_ec2.pp | 1 +
 5 files changed, 6 insertions(+), 1 deletion(-)






Per vedere le differenze in un file:



$ git diff main..testing controller_epoxy/manifests/configure_ec2.pp
diff --git a/controller_epoxy/manifests/configure_ec2.pp b/controller_epoxy/manifests/configure_ec2.pp
index abcbb1a..5bc9adf 100644
--- a/controller_epoxy/manifests/configure_ec2.pp
+++ b/controller_epoxy/manifests/configure_ec2.pp
@@ -8,6 +8,7 @@ class controller_epoxy::configure_ec2 inherits controller_epoxy::params {
 
 ##
 # FF aggiungo questa riga di test
+# e anche un'altra
 ##
 
 file { ['/var/lib/ec2-api',