Ansible

Bestanden downloaden met behulp van de Ansible get_url-module

Bestanden downloaden met behulp van de Ansible get_url-module

Als Linux-gebruiker bent u waarschijnlijk bekend met tools waarmee u bestanden van externe servers kunt downloaden met behulp van HTTP-, HTTPS- en FTP-protocollen, zoals wget en cURL. Bij het uitvoeren van automatiseringstaken moet u af en toe bestanden en pakketten downloaden naar externe hosts. Hoewel u wget en cURL op de externe hosts kunt gebruiken om deze functie uit te voeren, kunt u ook de vereiste installatie omzeilen om deze hulpprogramma's te gebruiken met behulp van de Ansible get_url-module.

Deze tutorial laat zien hoe je de Ansible get_url opdracht gebruikt om bestanden te downloaden van externe servers.

Voordat we beginnen, vereist de opdracht Ansible get_url de volgende vereisten:

  1. De externe server waarvan het bestand/de bestanden moeten worden gedownload, moet directe toegang hebben tot de hostserver.
  2. De hostserver moet zowel HTTP- als HTTPS-protocollen ondersteunen.

Over de get_url-module

Voordat je leert hoe je de get_url-module implementeert, zijn er eerst een paar dingen die het waard zijn om te begrijpen over deze module. De get_url-module ondersteunt de volgende functies:

Vervolgens laten we u zien hoe u de get_url-module kunt gebruiken om bestanden met verschillende protocollen en configuraties te downloaden.

De get_url-module gebruiken om bestanden te verkrijgen

Hieronder volgen enkele voorbeelden die u kunt implementeren met behulp van de get_url-module bij het downloaden van bestanden van een externe server.

Bestanden downloaden van HTTP/HTTPS-server met directe URL

Overweeg het volgende playbook dat een map maakt in de ~/.local en gebruikt de get_url-module om het Debian MySQL-pakket te downloaden.

OPMERKING: U kunt MYSQL-serverpakketten vinden in de onderstaande bron:

https://linkfy.naar/mysql-pakketten

- hosts: alle
- naam: Download Debian MySQL-server met HTTP/HTTPS
taken:
- naam: Maak map mysql-server in /home/user/.lokaal
het dossier:
pad: ~/.local/mysql-server
staat: map
modus: 0777
- naam: GET MySQL-serverpakketten
get_url:
url: “https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundel.teer"
bestemming: ~/.local/mysql-server
modus: 0777
controlesom: md5:5568e206a187a3b658392520540f556e

Het bovenstaande playbook begint met het maken van een map in $HOME/.local/mysql-server, waar het gedownloade pakket moet worden opgeslagen. Als u een map aanmaakt in een geprivilegieerde map, vergeet dan niet om de 'becom'-richtlijn te gebruiken.

Vervolgens roept het playbook de get_url-module aan en specificeert de URL van waaruit het pakket moet worden gedownload, gevolgd door de doelmap waarin het bestand moet worden opgeslagen. Het laatste deel van het playbook specificeert de md5-controlesom om de geldigheid van het bestand te controleren.

OPMERKING: In het bovenstaande playbook hebben we de controlesom hard gecodeerd, maar u kunt de URL opgeven waarop de controlesom wordt gehost.

Nadat u het draaiboek hebt uitgevoerd, krijgt u een uitvoer die het succes of falen van de taken aangeeft indicating.

$ ansible-playbook download_mysql_server.yml PLAY [Download Debian MySQL-server met HTTP/HTTPS] ************************************ ************************************************** ************************************************** ****************
TAAK [Feiten verzamelen] ********************************************* ************************************************** ************************************************** ****************************************
oke: [35.222.210.12]
TAAK [Maak map mysql-server in /home/user/.lokaal] ********************************************** ************************************************** ************************************************** **********
35.222.210.12: ok=3 gewijzigd=1 onbereikbaar=0 mislukt=0 overgeslagen=0 gered=0 genegeerd=0

Zodra het proces is voltooid, kunt u inloggen op de host en controleren of het bestand bestaat.

Bestanden downloaden met sha256 Checksum

Je kunt ook bestanden downloaden en verifiëren met behulp van de sha256-controlesom, zoals weergegeven in het onderstaande voorbeeld-playbook:

- hosts: alle
- naam: Download Debian MySQL-server met HTTP/HTTPS
taken:
- naam: Maak map mysql-server in /home/user/.lokaal
het dossier:
pad: ~/.local/mysql-server
staat: map
modus: 0777
- naam: GET MySQL-serverpakketten
get_url:
url: https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundel.teer
bestemming: ~/.local/mysql-server
modus: 0777
controlesom: sha256:b5bb9d8014a0f9b1d61e21e796d78eefdf1352f23cd32812f4850b878ae4944c

Als u een URL wilt gebruiken in plaats van de controlesom hard te coderen, kunt u het volgende voorbeeld bekijken:

- hosts: alle
- naam: Download Debian MySQL-server met HTTP/HTTPS
taken:
- naam: Maak map mysql-server in /home/user/.lokaal
het dossier:
pad: ~/.local/mysql-server
staat: map
modus: 0777
- naam: GET MySQL-serverpakketten
get_url:
url: https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundel.teer
bestemming: ~/.local/mysql-server
modus: 0777
controlesom: sha256:https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundel.teer.sha265

Bestanden downloaden met time-out bij niet reageren

In sommige gevallen heeft u mogelijk een gespecificeerde bron-URL die langer kan duren om te reageren of niet beschikbaar is. Dit kan ertoe leiden dat de verbinding wordt gesloten voordat de server reageert, omdat de standaardtime-out meestal 10 seconden is. Gebruik de time-out om de time-outwaarde expliciet op te geven: richtlijn.

Beschouw het volgende draaiboek:

- hosts: alle
- naam: Download Debian MySQL-server met time-out
taken:
- naam: Maak map mysql-server in /home/user/.lokaal
het dossier:
pad: ~/.local/mysql-server
staat: map
modus: 0777
- naam: GET MySQL-serverpakketten
get_url:
url: https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundel.teer
bestemming: ~/.local/mysql-server
modus: 0777
controlesom: sha256:https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.22-1debian10_amd64.deb-bundel.teer.sha265
time-out: 30

Het bovenstaande playbook specificeert de time-out als 30 seconden, en de verbinding wordt verbroken als de server niet binnen de ingestelde tijd reageert.

Bestanden downloaden met authenticatie

Om een ​​bestand te downloaden naar een server waarvoor verificatie is vereist, moet u de inlogwaarden opgeven.

Beschouw het volgende draaiboek:

- hosts: alle
- naam: Bestand downloaden met authenticatie
worden: ja
get_url:
url: http://102.15.192.120/back-ups/database.teer.gz
bestemming: /back-ups
gebruikersnaam: gebruiker
wachtwoord: 'pass'
modus: 0777
time-out: 5

Bestanden downloaden van lokaal bestandspad

Om een ​​bestand te downloaden van een lokaal bestandspad, kunt u het file:// URI-schema gebruiken, gevolgd door het pad naar het bestand.

Beschouw het volgende draaiboek:

- hosts: webservers
- naam: Bestand downloaden van lokaal bestandspad
worden: ja
get_url:
url: file:///backups/secure/config.teer.gz
bestemming: /dev/null

FTP-bestanden downloaden

Het downloaden van FTP-bestanden lijkt erg op het proces dat in de vorige sectie is beschreven. Het enige wat u hoeft te doen is ftp:// specificeren als het protocol voor de server.

Om een ​​beveiligd bestand te downloaden, moet u ook de inloggegevens toevoegen, zoals eerder getoond.

Beschouw het volgende draaiboek:

- hosts: alle
taken:
- naam: Bestand downloaden van FTP-server
worden: ja
get_url:
url: ftp://192.168.11.101
bestemming: /back-ups
modus: 0777

Opties voor ansible get_url-module

De get_url-module ondersteunt ook verschillende opties die u kunt gebruiken om het downloaden en beheren van bestanden te specificeren en te controleren. De opties die beschikbaar zijn met de get_url-module omvatten het volgende:

Conclusie

Dit artikel besprak de get_url-module in Ansible in detail en liet je zien hoe je deze module kunt gebruiken om bestanden uit verschillende bronnen te downloaden. U kunt dit artikel gebruiken om te verwijzen naar het downloaden van bestanden in Ansible met behulp van de get_url-module.

Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...
Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...
Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...