In questo tutorial, mostro come e dove installare Ansible Content Collections in un nodo di controllo Ansible che non ha accesso a Internet. Il processo è semplice e diretto, ma alcuni utenti sono confusi con il percorso di installazione e la configurazione.
Perché niente Internet?
Alcune organizzazioni non consentono ai server di connettersi direttamente a Internet. E a volte non consentono la connettività Internet anche tramite server proxy. Questa è una norma standard e potresti già averla sperimentata se lavori con server critici. E l'installazione di alcuni strumenti o file richiesti non è un compito facile senza l'accesso a Internet.
[ Ai lettori è piaciuto anche: Come posso beneficiare di un abbonamento a Red Hat in un momento di crisi e oltre ]
Installazione di Ansible Collection da Internet
Puoi installare direttamente Ansible Collections da Ansible Galaxy usando ansible-galaxy
comando. È un'attività semplice in cui è sufficiente specificare il nome della raccolta e il percorso di installazione. La galassia-ansible
comando si occuperà della creazione delle sottodirectory e delle attività di download della raccolta.
$ installazione della raccolta ansible-galaxy community.kubernetes -p ./collections
Fare riferimento alla documentazione di Ansible o a questa guida pratica per maggiori dettagli.
Installazione di Ansible Collection senza Internet
Per impostazione predefinita, ansible-galaxy
proverà a installare Ansible Collections da galaxy.ansible.com o dai server che hai configurato in GALAXY_SERVER configurazione (ad es. Automation Hub). Poiché questo scenario è un nodo di controllo Ansible senza accesso a Internet, non ne parlerò. Tuttavia, puoi comunque scaricare il contenuto della raccolta da Internet utilizzando una workstation o un laptop con accesso a Internet e quindi trasferire il contenuto al nodo di controllo Ansible disconnesso.
Trova la raccolta e scaricala per l'utilizzo offline
Per questa dimostrazione, installa Kubernetes Raccolta dalla community (community.kubernetes
).
Dalla tua workstation o laptop (con accesso a Internet), vai su galaxy.ansible.com e trova il community.kubernetes
Collezione.
Fai clic su Scarica Tarball collega e scarica la Collezione come archivio per l'utilizzo offline.
Trasferisci il file di archivio sulla macchina di destinazione, che è il tuo nodo di controllo Ansible:
$ scp ~/Downloads/community-kubernetes-1.2.0.tar.gz user@ansilbe-controlnode:~/
(Oppure puoi usare qualsiasi altro metodo come WinSCP, SFTP, ecc.)
Distribuire Ansible Collection sul nodo di controllo
Ora devi preparare il luogo in cui conservare le raccolte Ansible. Puoi tenerlo nelle directory di sistema (/usr/share/ansible/collections
) o la directory home dell'utente (~/.ansible/collections
), ma si consiglia di mantenere le raccolte basate su progetti per una migliore gestione).
In questo caso, crea una directory denominata raccolte
nella directory del progetto. In questo esempio, l'utente locale è denominato devops.
$ pwd/home/devops/ansible-collections-demo$ mkdir collections
Metodo 1:usa il comando ansible-galaxy con Ansible Collection scaricato
Usa la stessa ansible-galaxy
comando, ma invece di installare il contenuto della raccolta da Internet, specificare il file di archivio della raccolta da utilizzare:
È così facile e diretto.
Metodo 2:estrarre e organizzare manualmente i contenuti di Ansible Collection
Come accennato in precedenza, se stai usando ansible-galaxy
comando, Ansible si occuperà delle sottodirectory, ma qui devi creare tutto manualmente. Questo è necessario solo se la ansible-galaxy
il comando non funziona con l'archivio offline.
Crea sottodirectory nel seguente formato:
[DIR_PROGETTO]/[PERCORSO_COLLEZIONE]/ansible_collections/[AUTORE]/[NOME_COLLEZIONE]
Dove:
- [DIR_PROGETTO] - la directory del tuo progetto (
/home/devops/ansible-collections-demo
) - [COLLECTION_PATH] - che è
raccolte
in questo caso. - ansible_collections:il percorso che Ansible si aspetta per le raccolte
- [AUTORE] - la persona o il venditore che mantiene/fornisce la Collezione (ad es. comunità )
- [COLLECTION_NAME]:il nome della raccolta (ad es.
kubernetes
)
Crea le directory come mostrato:
$ mkdir -p collections/ansible_collections/community/kubernetes
Estrai il contenuto della raccolta e copialo nelle raccolte
directory:
$ pwd/home/devops/ansible-collections-demo$ tar -xf ~/Downloads/community-kubernetes-1.2.0.tar.gz \ -C collections/ansible_collections/community/kubernetes
Verifica il contenuto:
$ ls -l collections/ansible_collections/community/kubernetes/total 120-rw-rw-r-- 1 devops devops 36 Feb 26 18:13 bindep.txt-rw-rw-r-- 1 devops devops 15739 26 feb 18:13 CHANGELOG.rstdrwxrwxr-x 3 devops devops 4096 26 feb 18:13 changelogs-rw-rw-r-- 1 devops devops 107 feb 26 18:13 codecov.yml-rw-rw-r-- 1 devops devops 3278 26 feb 18:13 CONTRIBUTING.md-rw-rw-r-- 1 devops devops 857 26 feb 18:13 galaxy.yml-rw-rw-r-- 1 devops devops 35148 feb 26 18:13 LICENZA -rw-rw-r-- 1 devops devops 1112 Feb 26 18:13 Makefiledrwxrwxr-x 2 devops devops 4096 Feb 26 18:13 metadrwxrwxr-x 3 devops devops 4096 Feb 26 18:13 moleculedrwxrwxr-x 10 devops devops 4096 Feb 2 18:13 plugins-rw-rw-r-- 1 devops devops 8542 26 feb 18:13 README.md-rw-rw-r-- 1 devops devops 35 feb 26 18:13 requisiti.txt-rw-rw-r -- 1 devops devops 50 26 feb 18:13 setup.cfg-rw-rw-r-- 1 devops devops 20 feb 26 18:13 test-requirements.txtdrwxrwxr-x 5 devops devops 4096 feb 26 18:13 testsdrwx rwxr-x 2 devops devops 4096 26 febbraio 18:13 utilità
Configura Ansible per ritirare la raccolta
Ansible cercherà le raccolte in ~/.ansible/collections:/usr/share/ansible/collections
, che è il valore predefinito per COLLECTIONS_PATHS .
Devi comunicare ad Ansible la posizione del contenuto della raccolta. Per farlo, configura ansible.cfg
con i COLLECTIONS_PATHS iscrizione. Non è necessario modificare nulla nel file predefinito /etc/ansible/ansible.cfg
. Crea invece il tuo ansible.cfg
nella directory del progetto e mantieni tutte le configurazioni per il tuo progetto. Ecco un esempio:
$ pwd/home/devops/ansible-collections-demo$ cat ansible.cfg [defaults]inventory =./inventory COLLECTIONS_PATHS =./collections
Controlla il contenuto della directory dopo:
$ ls -ltotal 16-rw-rw-r-- 1 devops devops 309 22 dic 22:40 ansible.cfgdrwxrwxr-x 3 devops devops 4096 26 feb 18:09 collections-rw-rw-r- - 1 devops devops 369 26 febbraio 18:36 k8s-cluster-info.yaml
Verifica la raccolta Ansible implementata
Verifica la collezione con ansible-galaxy
comando:
$ elenco di raccolte ansible-galaxy # /home/devops/ansible-collections-demo/collections/ansible_collectionsCollection Versione------ -- -----community.kubernetes 1.2.0
Usa subito la tua raccolta nel tuo playbook.
Puoi facilmente raccogliere l'accesso ai contenuti utilizzando ansible-doc
comando e visualizzerà la documentazione se Collection e moduli sono installati correttamente.
$ ansible-doc community.kubernetes.k8s_info
Esamina il semplice playbook chiamato k8s-cluster-info.yaml
di seguito, che mostra le informazioni sul pod di un cluster Kubernetes:
---- nome:Ansible k8s Test host:localhost attività: - nome:Ottieni un elenco di tutti i pod da qualsiasi spazio dei nomi community.kubernetes.k8s_info: tipo:Pod register:pod_list - nome:Visualizza cluster k8s dettagli debug: msg:"{{ pod_list }}"
Nota :Devi installare le altre dipendenze Python richieste (ad esempio, openshift
, PyYAML
, ecc.) per il funzionamento dei moduli. Questo argomento non rientra nell'ambito di questo articolo ma puoi fare riferimento alle procedure standard (o leggere come installare i moduli Python offline).
[ Manuale dell'utente dell'API:7 best practices per programmi API efficaci ]
Concludi
Con l'introduzione di Red Hat Ansible Automation Platform, puoi mantenere i contenuti organizzati all'interno della tua rete. Tuttavia, questo deve essere configurato manualmente come fa Red Hat Ansible Tower. Leggi di più su Automation Hub per i dettagli.