Pulp è uno strumento di gestione dei repository open source che ti aiuta a recuperare, eseguire il mirroring, caricare e pubblicare contenuti all'interno della tua organizzazione. Può essere utilizzato per gestire vari tipi di contenuti come pacchetti software (dai pacchetti RPM alle gemme Ruby), nonché raccolte Ansible, immagini di contenitori e persino file arbitrari.
Un flusso di lavoro tipico inizia con il recupero dei pacchetti software da un repository esistente (ad esempio, http://mirror.centos.org/centos/7/os/x86_64/) o l'aggiunta manuale di pacchetti (per i pacchetti privati creati all'interno dell'organizzazione). Quindi Pulp ti aiuta a creare raccolte arbitrarie di pacchetti software che possono essere consumati dai clienti. Con esso, tu:
- Acquisisci il controllo sui contenuti disponibili per i consumatori
- Può usare il controllo della versione
- Riduci la larghezza di banda e le esigenze di archiviazione fornendo una fonte locale deduplicata
Se non conosci Pulp, leggi l'articolo introduttivo di Melanie Corr su come gestire i tuoi repository software con Pulp.
Gestisci pacchetti Debian con Pulp
Pulp si affida ai plugin per gestire adeguatamente diversi tipi di contenuto. Ad esempio, il plug-in Pulp RPM consente di gestire i pacchetti .rpm. Con il plug-in Pulp Debian, puoi eseguire il mirroring, sincronizzare, caricare e pubblicare pacchetti .deb all'interno dei repository APT. Il plug-in pulp_deb è essenziale se desideri gestire e fornire pacchetti software di consumo per distribuzioni Linux come Debian e Ubuntu, ed è un software gratuito e open source fornito e mantenuto dalla comunità Pulp.
Con il plug-in Pulp Debian, puoi gestire i contenuti Debian sincronizzando repository remoti, fornendo un'interfaccia per caricare i tuoi contenuti e pubblicando contenuti nei repository.
Pulp supporta diversi tipi di contenuto Debian, inclusi pacchetti, indici di pacchetti, file di rilascio e altro. "Tipo di contenuto" si riferisce a un artefatto o metadati specifici. Ad esempio, un'unità di contenuto di tipo package
fa riferimento a un pacchetto .deb.
La sincronizzazione di un repository remoto è una delle caratteristiche principali del plugin Pulp Debian ed è uno dei modi per ottenere contenuti. Il processo di sincronizzazione utilizza una definizione remota che contiene un URL, una distribuzione, componenti e architetture:
- L'URL è il percorso del repository APT remoto.
- La distribuzione è il percorso tra le
dists/
directory del repository APT e il relativoRelease
file. Questo è solitamente (ma non sempre) il nome in codice o la suite della distribuzione Linux basata su Debian (buster
per Debian 10,stretch
per Debian 9,focal
per Ubuntu 20.04 e così via). Esecuzione dilsb_release -cs
su qualsiasi host Debian o Ubuntu mostra il nome in codice della distribuzione. - Componenti descrivi sottoinsiemi arbitrari di repository (
main
,contrib
onon-free
per Debian, omain
,restricted
,universe
emultiverse
per Ubuntu). Puoi usarlo per filtrare e classificare i pacchetti all'interno di un repository APT. - L'architettura si riferisce all'architettura del processore su cui può essere eseguito un pacchetto software, più comunemente
i386
,amd64
oarm64
. Se un pacchetto software non dipende da un'architettura del processore specifica, l'architettura può essere impostata suall
.
La specifica di una distribuzione è obbligatoria, mentre la definizione di componenti e architetture è facoltativa. Se non definito, Pulp sincronizza automaticamente tutti i pacchetti senza filtrare componenti o architetture. Pulp verifica automaticamente la firma GNU Privacy Guard del Release
File, se la chiave pubblica GPG corrispondente è assegnata al telecomando.
Un esempio di flusso di lavoro
È facile passare da un repository remoto a una pubblicazione letterale con l'API REST di Pulp. Le seguenti chiamate API presuppongono che tu stia utilizzando HTTPie.
Immagina di voler fornire pacchetti .deb agli host della tua organizzazione. Il seguente flusso di lavoro di base guida i tuoi primi passi nell'utilizzo di Pulp e del plugin Pulp Debian.
1. Crea un repository locale
Inizia creando un repository locale in Pulp con una singola chiamata API. Puoi farlo con HTTPie o il comando curl:
http post http://<hostname>:24817/pulp/api/v3/repositories/deb/apt/ name=<name_of_your_repository>
2. Crea un telecomando
Quindi, crea un telecomando. Questa chiamata API richiede un URL e un name
arbitrario valore. La definizione di una distribuzione e di un'architettura è facoltativa:
http post http://<hostname>:24817/pulp/api/v3/remotes/deb/apt/ name="nginx.org" url="http://nginx.org/packages/debian" distributions="buster"
Indipendentemente dal fatto che tu definisca solo una o più distribuzioni, Pulp sincronizzerà in seguito i pacchetti per tutte le architetture, poiché non sono definiti per questo telecomando.
3. Sincronizza
Il terzo e ultimo passaggio per recuperare il contenuto remoto su Pulp è sincronizzare il telecomando con il tuo repository locale. Puoi farlo effettuando una chiamata all'endpoint API di sincronizzazione del tuo repository:
http post http://<hostname>:24817/pulp/api/v3/repositories/deb/apt/<uuid_repository>/sync/ remote=http://<hostname>:24817/pulp/api/v3/remotes/deb/apt/<uuid_remote>/
In questo comando di esempio, ciascuno degli UUID fa riferimento ai riferimenti interni di Pulp, visualizzati come pulp_href
dall'API. Questo passaggio potrebbe richiedere del tempo, a seconda dell'ambiente, delle dimensioni del repository e della larghezza di banda disponibile.
Rendi consumabili i tuoi contenuti Pulp
Dopo aver acquisito il contenuto per Pulp tramite la sincronizzazione, diventa consumabile dai client.
1. Crea una pubblicazione
Le pubblicazioni sono sempre basate su un repository Pulp. Contengono impostazioni aggiuntive su come pubblicare il contenuto. Puoi usare il APT
editore su qualsiasi repository di tipo APT contenente pacchetti .deb.
La seguente chiamata API crea una pubblicazione in modalità letterale. Cioè, fornisce esattamente la stessa struttura e contenuto del repository remoto:
http post http://<hostname>:24817/pulp/api/v3/publications/deb/verbatim/ repository=/pulp/api/v3/repositories/deb/apt/<uuid_repository>/
Sostituisci l'UUID con il repository che desideri pubblicare. Questo passaggio potrebbe richiedere del tempo, a seconda delle dimensioni del repository.
2. Crea una distribuzione
Una distribuzione prende la pubblicazione finita e la serve tramite l'app Pulp content, che la rende disponibile (o "consumabile") dai tuoi utenti. Nel contesto di un sistema Debian, questo significa che il repository può essere aggiunto a /etc/apt/sources.list
e utilizzato come metodo per installare il software.
La seguente chiamata API richiede l'UUID della pubblicazione creata nel primo passaggio:
http post http://<hostname>:24817/pulp/api/v3/distributions/deb/apt/ name="name_of_the_distribution" base_path="base_path_of_the_distribution" publication=http://<hostname>:24817/pulp/api/v3/publications/deb/verbatim/<uuid_publication>/
Il base_path
value fa parte dell'URL utilizzato dai client quando si fa riferimento al repository APT e il nome può essere arbitrario. La chiamata all'endpoint API della distribuzione su una specifica distribuzione pubblicata restituisce l'URL del repository Pulp:
http get http://<hostname>:24817/pulp/api/v3/distributions/deb/apt/<uuid_distribution>/
Questo URL è direttamente utilizzabile dai client APT. Ora può essere aggiunto a /etc/apt/sources.list
come repository valido.
API Pulp
L'utilizzo di queste chiamate API ti consente di sincronizzare un repository APT con la tua istanza Pulp e di ripubblicarlo alla lettera, senza toccare i pacchetti, i metadati o le firme. Fare riferimento alla documentazione dell'API e alla panoramica delle funzionalità per ulteriori informazioni e altre modalità di pubblicazione.
Flessibilità open source
Più contenuti eccezionali
- Corso online gratuito:panoramica tecnica di RHEL
- Impara i comandi avanzati di Linux
- Scarica cheat sheet
- Trova un'alternativa Open Source
- Leggi i migliori contenuti Linux
- Dai un'occhiata alle risorse open source
Un aspetto importante di Pulp e della sua struttura di plugin è che è estremamente flessibile, in gran parte dovuto alla sua natura open source. Puoi eseguire Pulp come servizio autonomo, ma non è necessario. Può essere integrato in qualcosa di più grande.
Lavoro in ATIX, dove abbiamo iniziato a usare Pulp e il plugin Pulp Debian in un progetto chiamato orcharhino. È basato su Foreman e include il potente plug-in Katello per ulteriori capacità di gestione dei contenuti, che a sua volta si basa su Pulp per la gestione del repository. In questo modo, siamo stati in grado di gestire il nostro data center con l'implementazione automatizzata del sistema, la gestione della configurazione e la gestione delle patch.
In altre parole, ATIX sviluppa il plugin Pulp Debian principalmente pensando a un caso d'uso Katello. Che tu abbia bisogno di Katello o Pulp o solo di un plug-in Pulp specifico, puoi essere certo che questa modularità è in base alla progettazione.
Utilizzando Pulp, puoi eseguire il mirroring di repository software remoti, ospitare pacchetti software privati e gestire diversi tipi di contenuti su un'unica piattaforma.
Prova oggi Pulp e il plugin Pulp Debian e non aver paura di unirti e chiedere aiuto alla comunità. Diamo il benvenuto a qualsiasi feedback.