Come utente Linux, probabilmente hai familiarità con gli strumenti che ti consentono di scaricare file da server remoti utilizzando i protocolli HTTP, HTTPS e FTP, come wget e cURL. Quando si eseguono attività di automazione, occasionalmente sarà necessario scaricare file e pacchetti su host remoti. Sebbene sia possibile utilizzare wget e cURL sugli host remoti per eseguire questa funzione, è anche possibile ignorare l'installazione richiesta per utilizzare questi strumenti utilizzando il modulo Ansible get_url.
Questo tutorial mostra come utilizzare il comando Ansible get_url per scaricare file da server remoti.
Prima di iniziare, il comando Ansible get_url richiede i seguenti prerequisiti:
- Il server remoto da cui devono essere scaricati i file dovrebbe avere accesso diretto al server host.
- Il server host dovrebbe supportare entrambi i protocolli HTTP e HTTPS.
Informazioni sul modulo get_url
Prima di imparare come implementare il modulo get_url, per prima cosa, ci sono alcune cose che vale la pena capire su questo modulo. Il modulo get_url supporta le seguenti funzionalità:
- Download del checksum e convalida dal server
- Server HTTP, HTTPS e FTP
- Server proxy, che possono essere specificati dal
_direttiva proxy - Impostazione di un timeout per le richieste di ricezione
- Scansione web
- Autorizzazione web di base
Successivamente, ti mostreremo come utilizzare il modulo get_url per scaricare file con vari protocolli e configurazioni.
Utilizzo del modulo get_url per ottenere file
Di seguito sono riportati alcuni esempi che è possibile implementare utilizzando il modulo get_url durante il download di file da un server remoto.
Scarica file dal server HTTP/HTTPS con URL diretto
Considera il seguente playbook che crea una directory nel ~/.local e usa il modulo get_url per scaricare il pacchetto Debian MySQL.
NOTA: puoi trovare i pacchetti del server MYSQL nella risorsa fornita di seguito:
https://linkfy.to/mysql-pacchetti
- host: tutti- nome: Scarica il server Debian MySQL utilizzando HTTP/HTTPS
compiti:
- nome: crea la directory mysql-server in /home/user/.Locale
file:
percorso: ~/.local/mysql-server
stato: directory
modalità: 0777
- nome: GET pacchetti del server MySQL
get_url:
URL: “https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundle.catrame"
destinazione: ~/.local/mysql-server
modalità: 0777
somma di controllo: md5:5568e206a187a3b658392520540f556e
Il playbook sopra inizia creando una directory in $HOME/.local/mysql-server, dove dovrebbe essere archiviato il pacchetto scaricato. Se stai creando una directory in una directory privilegiata, ricorda di usare la direttiva 'become''.
Successivamente, il playbook chiama il modulo get_url e specifica l'URL da cui scaricare il pacchetto, seguito dalla directory di destinazione in cui archiviare il file. La sezione finale del playbook specifica il checksum md5 per verificare la validità del file.
NOTA: Nel playbook sopra, abbiamo codificato il checksum, ma puoi specificare l'URL in cui è ospitato il checksum.
Dopo aver eseguito il playbook, otterrai un output che indica il successo o il fallimento delle attività.
$ ansible-playbook download_mysql_server.yml PLAY [Scarica il server Debian MySQL usando HTTP/HTTPS] ************************************** ************************************************** ************************************************** ******************COMPITO [Raccolta dati] ********************************************* ************************************************** ************************************************** ****************************************
bene: [35.222.210.12]
TASK [Crea directory mysql-server in /home/user/.Locale] ************************************************ ************************************************** ************************************************** ***********
35.222.210.12 : ok=3 modificato=1 irraggiungibile=0 fallito=0 saltato=0 salvato=0 ignorato=0
Una volta completato il processo, puoi accedere all'host e verificare se il file esiste.
Scarica file con checksum sha256
Puoi anche scaricare file e verificarli utilizzando il checksum sha256, come mostrato nel playbook di esempio di seguito:
- host: tutti- nome: Scarica il server Debian MySQL utilizzando HTTP/HTTPS
compiti:
- nome: crea la directory mysql-server in /home/user/.Locale
file:
percorso: ~/.local/mysql-server
stato: directory
modalità: 0777
- nome: GET pacchetti del server MySQL
get_url:
URL: https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundle.catrame
destinazione: ~/.local/mysql-server
modalità: 0777
checksum: sha256:b5bb9d8014a0f9b1d61e21e796d78eefdf1352f23cd32812f4850b878ae4944c
Per utilizzare un URL invece di codificare il checksum, considera il seguente esempio:
- host: tutti- nome: Scarica il server Debian MySQL utilizzando HTTP/HTTPS
compiti:
- nome: crea la directory mysql-server in /home/user/.Locale
file:
percorso: ~/.local/mysql-server
stato: directory
modalità: 0777
- nome: GET pacchetti del server MySQL
get_url:
URL: https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundle.catrame
destinazione: ~/.local/mysql-server
modalità: 0777
checksum: sha256:https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundle.catrame.sha265
Scarica file con timeout in caso di mancata risposta
In alcuni casi, potresti avere un URL di risorsa specificato che può richiedere più tempo per rispondere o non è disponibile. Ciò può causare la chiusura della connessione prima che il server risponda, poiché il timeout predefinito è solitamente di 10 secondi. Per specificare esplicitamente il valore di timeout, usa il timeout:
Considera il seguente playbook:
- host: tutti- nome: Scarica il server Debian MySQL con timeout
compiti:
- nome: crea la directory mysql-server in /home/user/.Locale
file:
percorso: ~/.local/mysql-server
stato: directory
modalità: 0777
- nome: GET pacchetti del server MySQL
get_url:
URL: https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundle.catrame
destinazione: ~/.local/mysql-server
modalità: 0777
checksum: sha256:https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundle.catrame.sha265
timeout: 30
Il playbook sopra specifica il timeout di 30 secondi e la connessione verrà interrotta se il server non risponde entro il tempo impostato.
Scarica file con autenticazione
Per scaricare un file su un server che richiede l'autenticazione, dovrai specificare i valori di accesso.
Considera il seguente playbook:
- host: tutti- nome: Scarica file con autenticazione
diventa: sì
get_url:
URL: http://102.15.192.120/backup/database.catrame.gz
destinazione: /backup
nome utente: utente
password: 'pass'
modalità: 0777
timeout: 5
Scarica file dal percorso file locale
Per scaricare un file da un percorso di file locale, puoi utilizzare lo schema file:// URI, seguito dal percorso del file.
Considera il seguente playbook:
- host: server web- nome: Scarica il file dal percorso del file locale
diventa: sì
get_url:
url: file:///backups/secure/config.catrame.gz
dest: /dev/null
Scarica file FTP
Il download di file FTP è molto simile al processo descritto nella sezione precedente. Tutto quello che devi fare è specificare ftp:// come protocollo per il server.
Per scaricare un file sicuro, è necessario aggiungere anche le informazioni di accesso, come mostrato in precedenza.
Considera il seguente playbook:
- host: tutticompiti:
- nome: Scarica file dal server FTP
diventa: sì
get_url:
URL: ftp://192.168.11.101
destinazione: /backup
modalità: 0777
Opzioni modulo Ansible get_url
Il modulo get_url supporta anche varie opzioni che puoi utilizzare per specificare e monitorare il download e la gestione dei file file. Le opzioni disponibili con il modulo get_url includono quanto segue:
- Backup: L'opzione backup, un booleano di sì e no, permette di specificare se creare una copia di backup del file da scaricare.
- Gruppo: l'opzione group specifica il gruppo che ha la proprietà del file scaricato; questa opzione è come il comando chown in Unix.
- Intestazioni: l'opzione delle intestazioni viene utilizzata per specificare intestazioni HTTP personalizzate in un dizionario in formato hash.
- http_agent: L'opzione http_agent specifica l'agente HTTP.
- Proprietario: L'opzione proprietario specifica il proprietario dei file scaricati.
- Seuser: L'opzione seuser imposta l'utente nel contesto del file SELinux.
- Usa un proxy: L'opzione use_proxy imposta se deve essere utilizzato un proxy. Se questa opzione è impostata su false, tutti i proxy verranno ignorati, anche se ne hai uno specificato nell'host di destinazione.
Conclusione
Questo articolo ha discusso in dettaglio il modulo get_url in Ansible e ti ha mostrato come utilizzare questo modulo per scaricare file da varie fonti. Puoi utilizzare questo articolo per fare riferimento a come scaricare file in Ansible utilizzando il modulo get_url.