Aggiunto readme
This commit is contained in:
parent
9d0e89d404
commit
bf4fb187a6
1 changed files with 87 additions and 0 deletions
87
README.md
Normal file
87
README.md
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
Puppet-deploy
|
||||||
|
=============
|
||||||
|
|
||||||
|
|
||||||
|
Ovvero della centralizzazione, automazione delle configurazioni per indivia/ortiche.
|
||||||
|
|
||||||
|
### Requisiti
|
||||||
|
|
||||||
|
#### Puppet
|
||||||
|
- [Puppet](https://puppetlabs.com/)
|
||||||
|
- [Puppet modules](https://docs.puppetlabs.com/puppet/latest/reference/modules_fundamentals.html)
|
||||||
|
- **puppet masterless**
|
||||||
|
- [puppet masterless server automation on a very small scale](https://www.tiredpixel.com/2014/02/23/puppet-masterless-server-automation-on-a-very-small-scale/)
|
||||||
|
|
||||||
|
#### Git
|
||||||
|
- [Git](http://www.git-scm.com/)
|
||||||
|
- **git submodules**
|
||||||
|
- [Pro Git book](http://git-scm.com/book/en/v2/Git-Tools-Submodules)
|
||||||
|
|
||||||
|
#### Riseup shared puppet modules
|
||||||
|
- [Shared puppet modules](https://labs.riseup.net/code/projects/sharedpuppetmodules)
|
||||||
|
|
||||||
|
#### Gogs
|
||||||
|
- [Gogs](http://gogs.io/)
|
||||||
|
- **http://gogs.lattuga.net**
|
||||||
|
|
||||||
|
#### Presupposti
|
||||||
|
- Semplificare l'installazione l'installazione di un nuovo server
|
||||||
|
- Semplificare la reinstallazione di un server esistente
|
||||||
|
- Mantenere tutte le configurazioni in un'unico repository, con history
|
||||||
|
- Poter collaborare facilmente al mantenimento dei server e servizi
|
||||||
|
- Evitare Single Point of Failure
|
||||||
|
- Usare tool standard diffusi e minimamente conosciuti anche da noi
|
||||||
|
- Collaborare con gli altri collettivi/server/reti
|
||||||
|
|
||||||
|
#### Architettura
|
||||||
|
|
||||||
|
##### Gogs
|
||||||
|
- ###### Organizzazione [opuppet](http://git.lattuga.net/org/opuppet)
|
||||||
|
A questa fanno riferimento tutti i repository. I permessi sui repository di un'organizzazione non vengono definiti per utente, bensi' per team.
|
||||||
|
In opuppet ne sono definiti tre:
|
||||||
|
- *Owners* possono creare nuovi repository e chiaramente leggere e scrivere.
|
||||||
|
Di questa fanno parte tutti gli sviluppatori
|
||||||
|
- *Developers* ha permessi di lettura/scrittura sui repository esistenti.
|
||||||
|
- *Deploy* ha i permessi di lettura sui repository. A questo team appartengono tutti i server.
|
||||||
|
|
||||||
|
|
||||||
|
##### Progetti Git
|
||||||
|
- ###### [puppet-deploy](http://git.lattuga.net/opuppet/puppet-deploy)
|
||||||
|
- E' il progetto principale in cui viene mantenuta tutta la configurazione di puppet;
|
||||||
|
- Ogni sviluppatore ha un account read-write sul repository centrale di questo progetto;
|
||||||
|
- Una copia del repository e' distribuita su ogni server, con account read-only, nella directory `/etc/puppet` (su Debian);
|
||||||
|
- **NON** contiene dati sensibili (chiavi e password);
|
||||||
|
- **NON** contiene tabelle utenti;
|
||||||
|
- Il file `manifests/site.pp` contiene tutte le associazioni server/servizio e quindi le dichiarazioni delle classi
|
||||||
|
(**PER ORA**: bisogna valutare se implemntare un semplice [External Node Classifier](https://docs.puppetlabs.com/guides/external_nodes.html) )
|
||||||
|
- Tutte le funzionalita', i [moduli puppet](https://docs.puppetlabs.com/puppet/latest/reference/modules_fundamentals.html), sono
|
||||||
|
`git submodule` del progetto **obbligatoriamente** ospitati su un nostro repository.
|
||||||
|
|
||||||
|
- ###### module-$name
|
||||||
|
- Ogni modulo ha un suo repository con la convenzione `http://git.lattuga.net/opuppet/module-$name`;
|
||||||
|
- Quando possibile il clone iniziale avviene da gli shared puppet module di riseup **NON** dai 'moduli personali' ne' di riseup, ne' dei collettivi
|
||||||
|
(Esempio: `https://labs.riseup.net/git/shared-apt.git` e' il modulo **shared** mentre `https://labs.riseup.net/git/module-apt.git` e' il modulo privato di riseup,
|
||||||
|
`https://git.puppet.immerda.ch/module-apt/` e' il modulo di quelli di immerda);
|
||||||
|
- Quando nel progetto principale viene eseguito un `git submodule add` questo **DEVE** puntare ad un url ospitata dal nostro repository.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### Workflow
|
||||||
|
|
||||||
|
- ##### Aggiungere uno sviluppatore a opuppet su Gogs
|
||||||
|
- ##### Aggiungere un server a opuppet su Gogs
|
||||||
|
- ##### Installare un nuovo server e configurare Git/puppet
|
||||||
|
- ##### Aggiungere la configurazione di un nuovo server in puppet-deploy
|
||||||
|
- ##### Aggiungere un submodule a puppet-deploy
|
||||||
|
|
||||||
|
|
||||||
|
#### Appunti
|
||||||
|
- ##### module naming convention
|
||||||
|
Dalla [documentazione di puppet](https://docs.puppetlabs.com/puppet/latest/reference/modules_fundamentals.html#manifests):
|
||||||
|
*`init.pp` is special and always contains a class with the same name as the module. You may not have a class named init.*
|
||||||
|
- ##### riseup clone workaround
|
||||||
|
Invece di eseguire `git clone https://labs.riseup.net/git/shared-$name.git` e' necessario modificare l'url in modo che diventi `git clone https://labs.riseup.net/code/shared-$name.git`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue