Come scaricare file utilizzando il modulo Ansible get_url

Come scaricare file utilizzando il modulo Ansible get_url

Come utente Linux, probabilmente hai familiarità con gli strumenti che consentono di scaricare file da server remoti utilizzando protocolli HTTP, HTTPS e FTP, come WGET e CURL. Quando si eseguono attività di automazione, occasionalmente dovrai scaricare file e pacchetti su host remoti. Mentre è possibile utilizzare Wget e arricciarsi sugli host remoti per eseguire questa funzione, è anche possibile bypassare l'installazione richiesta per utilizzare questi strumenti utilizzando il modulo ANSIBE 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:

  1. Il server remoto da cui devono essere scaricati i file dovrebbe avere accesso diretto al server host.
  2. Il server host dovrebbe supportare sia i protocolli HTTP che HTTPS.

Informazioni sul modulo get_url

Prima di imparare come implementare il modulo get_url, prima, ci sono alcune cose che meritano di essere comprese su questo modulo. Il modulo GET_URL supporta le seguenti funzionalità:

  • Download e convalida del checksum dal server
  • Server HTTP, HTTPS e FTP
  • Server proxy, che possono essere specificati dalla direttiva _proxy
  • Impostazione di un timeout per le richieste GET
  • Crawling web
  • Autorizzazione Web di base

Successivamente, ti mostreremo come utilizzare il modulo get_url per scaricare file con vari protocolli e configurazioni.

Utilizzando il 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 i file dal server HTTP/HTTPS con URL diretto

Considera il seguente playbook che crea una directory in ~/.locale e utilizza il modulo get_url per scaricare il pacchetto Debian Mysql.

NOTA: Puoi trovare pacchetti di server MySQL nella risorsa fornita di seguito:

https: // linkfy.a/mysql-packages

- Host: tutto
- Nome: Scarica Debian Mysql Server utilizzando HTTP/HTTPS
compiti:
- Nome: Make Directory MySQL-Server in/Home/User/.Locale
file:
Path: ~/.locale/mysql-server
Stato: directory
Modalità: 0777
- Nome: Ottieni pacchetti MySQL-Server
get_url:
URL: “https: // downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1DEBIAN10_AMD64.Deb-bundle.catrame"
dest: ~/.locale/mysql-server
Modalità: 0777
checksum: MD5: 5568E206A187A3B658392520540F556E

Il playbook sopra inizia creando una directory in $ home/.locale/mysql-server, in cui il pacchetto scaricato dovrebbe essere archiviato. Se stai creando una directory in una directory privilegiata, ricorda di usare la direttiva "diventa".

Successivamente, il playbook chiama il modulo GET_URL e specifica l'URL da cui scaricare il pacchetto, seguito dalla directory di destinazione a 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 è possibile 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 Debian Mysql Server utilizzando HTTP/HTTPS] *************************************** ************************************************* ************************************************* ******************
Attività [raccolta fatti] ******************************************* ************************************************* ************************************************* ***************************************
OK: [35.222.210.12]
Task [Rendi directory mysql-server in/home/utente/.Locale] ************************************************ ************************************************* ************************************************* ***********
35.222.210.12: OK = 3 modificato = 1 non raggiungibile = 0 non riuscito = 0 saltato = 0 salvato = 0 ignorato = 0

Una volta completato il processo, è possibile 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 qui sotto:

- Host: tutto
- Nome: Scarica Debian Mysql Server utilizzando HTTP/HTTPS
compiti:
- Nome: Make Directory MySQL-Server in/Home/User/.Locale
file:
Path: ~/.locale/mysql-server
Stato: directory
Modalità: 0777
- Nome: Ottieni pacchetti MySQL-Server
get_url:
URL: https: // downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1DEBIAN10_AMD64.Deb-bundle.catrame
dest: ~/.locale/mysql-server
Modalità: 0777
checksum: sha256: b5bb9d8014a0f9b1d61e21e796d78eeefdf1352f23cd32812f4850b878ae4944c

Per utilizzare un URL invece di codificare il checksum, considera il seguente esempio:

- Host: tutto
- Nome: Scarica Debian Mysql Server utilizzando HTTP/HTTPS
compiti:
- Nome: Make Directory MySQL-Server in/Home/User/.Locale
file:
Path: ~/.locale/mysql-server
Stato: directory
Modalità: 0777
- Nome: Ottieni pacchetti MySQL-Server
get_url:
URL: https: // downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1DEBIAN10_AMD64.Deb-bundle.catrame
dest: ~/.locale/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 i file con timeout in caso di risposta

In alcuni casi, è possibile avere un URL di risorse 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 è di solito 10 secondi. Per specificare esplicitamente il valore di timeout, utilizzare il timeout: direttiva.

Considera il seguente playbook:

- Host: tutto
- Nome: Scarica Debian Mysql Server con timeout
compiti:
- Nome: Make Directory MySQL-Server in/Home/User/.Locale
file:
Path: ~/.locale/mysql-server
Stato: directory
Modalità: 0777
- Nome: Ottieni pacchetti MySQL-Server
get_url:
URL: https: // downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1DEBIAN10_AMD64.Deb-bundle.catrame
dest: ~/.locale/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 come 30 secondi e la connessione verrà eliminata 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: tutto
- Nome: scarica file con autenticazione
Diventa: sì
get_url:
URL: http: // 102.15.192.120/backup/database.catrame.Gz
dest: /backups
Nome utente: utente
Password: 'pass'
Modalità: 0777
Timeout: 5

Scarica i file dal percorso del file locale

Per scaricare un file da un percorso del file locale, è possibile utilizzare lo schema del file: // URI, seguito dal percorso del file.

Considera il seguente playbook:

- Host: Webservers
- 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 anche aggiungere le informazioni di accesso, come mostrato in precedenza.

Considera il seguente playbook:

- Host: tutto
compiti:
- Nome: scarica il file dal server FTP
Diventa: sì
get_url:
URL: FTP: // 192.168.11.101
dest: /backups
Modalità: 0777

Opzioni del modulo Ansible get_url

Il modulo GET_URL supporta anche varie opzioni che è possibile utilizzare per specificare e monitorare il download e la gestione dei file. Le opzioni disponibili con il modulo GET_URL includono quanto segue:

  • Backup: L'opzione di backup, un booleano di sì e no, consente di specificare se creare una copia di backup del file da scaricare.
  • Gruppo: L'opzione del gruppo specifica il gruppo che ha la proprietà del file scaricato; Questa opzione è come il comando Chown in Unix.
  • Testate: L'opzione di intestazioni viene utilizzata per specificare le intestazioni HTTP personalizzate in un dizionario in formato hash.
  • http_agent: L'opzione HTTP_AGENT specifica l'agente HTTP.
  • Proprietario: L'opzione del proprietario specifica il proprietario dei file di download.
  • 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 e ha mostrato come utilizzare questo modulo per scaricare file da varie fonti. È possibile utilizzare questo articolo per fare riferimento a come scaricare i file in ansible utilizzando il modulo get_url.