You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

Work in progress



Overview


Usiamo un meccanismo di CI/CD per cui:

  • Esiste un git repo unico sia per la parte controller che per la parte compute con 2 branch:
    • Il branch 'main' viene usato  nella cloud di produzione (environment  'production' di puppet)
    • Il branch 'testing' viene usato nella cloud di test (environment 'testing' di puppet
  • Il codice puppet che viene usato sta in cld-config. ma non si deve MAI modificare i sorgenti puppet direttamente su cld-config
  • Modifiche al codice vanno implementate:
    • Per cloud di test  committando (lavorando sulla propria postazione di lavoro) committando sul branch testing. Queste vengono apoi utomaticamente "scaricate" in cld-config
    • Per cloud di produzione (quindi branch main) solo come pull request lavorando sulla propria postazione di lavoro. Una volta che sono approvate (e quindi mergiate nel branch main) queste vengono automaticamente "scaricate" in cld-config
    • In generale prima si modifica sul branch testing e poi (dopo una fase di testing) la modifica deve finire anche in main
    • Modifiche solo in main non devono essere fatte




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 dovrebbe finire anche su main.

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',







  • No labels