Som Linux-bruger er du sandsynligvis fortrolig med værktøjer, der giver dig mulighed for at downloade filer fra eksterne servere ved hjælp af HTTP-, HTTPS- og FTP-protokoller, såsom wget og cURL. Når du udfører automatiseringsopgaver, skal du lejlighedsvis downloade filer og pakker til eksterne værter. Mens du kan bruge wget og cURL på fjernværterne til at udføre denne funktion, kan du også omgå den nødvendige installation for at bruge disse værktøjer ved hjælp af Ansible get_url-modulet.
Denne vejledning viser dig, hvordan du bruger kommandoen Ansible get_url til at downloade filer fra eksterne servere.
Inden vi begynder, kræver Ansible get_url-kommandoen følgende forudsætninger:
- Den eksterne server, hvorfra filerne skal downloades, skal have direkte adgang til værtsserveren.
- Værtsserveren skal understøtte både HTTP- og HTTPS-protokoller.
Om get_url-modulet
Før du lærer om, hvordan du implementerer get_url-modulet, er der først et par ting, der er værd at forstå ved dette modul. Get_url-modulet understøtter følgende funktioner:
- Checksum download og validering fra serveren
- HTTP-, HTTPS- og FTP-servere
- Proxy-servere, som kan specificeres af
_proxy-direktivet - Indstilling af en timeout for få anmodninger
- Webcrawling
- Grundlæggende webtilladelse
Dernæst viser vi dig, hvordan du bruger get_url-modulet til at downloade filer med forskellige protokoller og konfigurationer.
Brug get_url-modulet til at hente filer
Følgende er nogle eksempler, som du kan implementere ved hjælp af get_url-modulet, når du downloader filer fra en ekstern server.
Download filer fra HTTP / HTTPS-server med direkte URL
Overvej følgende playbook, der opretter en mappe i ~ /.lokalt og bruger get_url-modulet til at downloade Debian MySQL-pakken.
BEMÆRK: Du kan finde MYSQL-serverpakker i nedenstående ressource:
https: // linkfy.til / mysql-pakker
- værter: alle- navn: Download Debian MySQL-server ved hjælp af HTTP / HTTPS
opgaver:
- navn: Gør kataloget til mysql-server i / home / user /.lokal
fil:
sti: ~ /.lokal / mysql-server
tilstand: katalog
tilstand: 0777
- navn: GET MySQL-serverpakker
get_url:
url: “https: // downloads.mysql.com / arkiver / get / p / 23 / fil / mysql-server_8.0.22-1debian10_amd64.deb-bundt.tjære"
dest: ~ /.lokal / mysql-server
tilstand: 0777
kontrolsum: md5: 5568e206a187a3b658392520540f556e
Ovenstående playbook starter med at oprette et bibliotek i $ HOME /.local / mysql-server, hvor den downloadede pakke skal gemmes. Hvis du opretter en mappe i en privilegeret mappe, skal du huske at bruge 'blive' direktivet.
Derefter kalder playbooken get_url-modulet og specificerer den URL, hvorfra pakken skal downloades, efterfulgt af destinationsmappen, hvor filen skal gemmes. Det sidste afsnit i playbook specificerer md5-kontrolsummen for at kontrollere gyldigheden af filen.
BEMÆRK: I ovenstående playbook har vi hårdkodet kontrolsummen, men du kan angive den URL, hvor kontrolsummen er hostet.
Når du har kørt playbooken, får du en output, der angiver, om opgaverne er succesrige eller mislykkede.
$ ansible-playbook download_mysql_server.yml PLAY [Download Debian MySQL-server ved hjælp af HTTP / HTTPS] ************************************** ************************************************** ************************************************* ******************OPGAVER [Indsamling af fakta] ********************************************* ************************************************** ************************************************** *****************************************
ok: [35.222.210.12]
OPGAVER [Gør mappe til mysql-server i / home / user /.lokal] ************************************************ ************************************************** ************************************************* ***********
35.222.210.12: ok = 3 ændret = 1 ikke tilgængelig = 0 mislykkedes = 0 springet over = 0 reddet = 0 ignoreret = 0
Når processen er afsluttet, kan du logge ind på værten og kontrollere, om filen findes.
Download filer med sha256 kontrolsum
Du kan også downloade filer og kontrollere dem ved hjælp af sha256-kontrolsummen, som vist i eksemplet på playbook nedenfor:
- værter: alle- navn: Download Debian MySQL-server ved hjælp af HTTP / HTTPS
opgaver:
- navn: Gør kataloget til mysql-server i / home / user /.lokal
fil:
sti: ~ /.lokal / mysql-server
tilstand: katalog
tilstand: 0777
- navn: GET MySQL-serverpakker
get_url:
url: https: // downloads.mysql.com / arkiver / get / p / 23 / fil / mysql-server_8.0.22-1debian10_amd64.deb-bundt.tjære
dest: ~ /.lokal / mysql-server
tilstand: 0777
kontrolsum: sha256: b5bb9d8014a0f9b1d61e21e796d78eefdf1352f23cd32812f4850b878ae4944c
Hvis du vil bruge en URL i stedet for hardcoding af kontrolsummen, skal du overveje følgende eksempel:
- værter: alle- navn: Download Debian MySQL-server ved hjælp af HTTP / HTTPS
opgaver:
- navn: Gør kataloget til mysql-server i / home / user /.lokal
fil:
sti: ~ /.lokal / mysql-server
tilstand: katalog
tilstand: 0777
- navn: GET MySQL-serverpakker
get_url:
url: https: // downloads.mysql.com / arkiver / get / p / 23 / fil / mysql-server_8.0.22-1debian10_amd64.deb-bundt.tjære
dest: ~ /.lokal / mysql-server
tilstand: 0777
kontrolsum: sha256: https: // downloads.mysql.com / arkiver / get / p / 23 / fil / mysql-server_8.0.22-1debian10_amd64.deb-bundt.tjære.sha265
Download filer med timeout ved manglende svar
I nogle tilfælde har du muligvis en bestemt ressource-URL, der kan tage længere tid at svare på eller er utilgængelig. Dette kan få forbindelsen til at lukke, før serveren reagerer, da standard timeout normalt er 10 sekunder. For at eksplicit angive timeoutværdien skal du bruge timeout:
Overvej følgende playbook:
- værter: alle- navn: Download Debian MySQL-server med timeout
opgaver:
- navn: Gør kataloget til mysql-server i / home / user /.lokal
fil:
sti: ~ /.lokal / mysql-server
tilstand: katalog
tilstand: 0777
- navn: GET MySQL-serverpakker
get_url:
url: https: // downloads.mysql.com / arkiver / get / p / 23 / fil / mysql-server_8.0.22-1debian10_amd64.deb-bundt.tjære
dest: ~ /.lokal / mysql-server
tilstand: 0777
kontrolsum: sha256: https: // downloads.mysql.com / arkiver / get / p / 23 / fil / mysql-server_8.0.22-1debian10_amd64.deb-bundt.tjære.sha265
timeout: 30
Ovenstående playbook specificerer timeout som 30 sekunder, og forbindelsen afbrydes, hvis serveren ikke reagerer inden for den indstillede tid.
Download filer med godkendelse
For at downloade en fil til en server, der kræver godkendelse, skal du angive loginværdierne.
Overvej følgende playbook:
- værter: alle- navn: Download fil med godkendelse
blive: ja
get_url:
url: http: // 102.15.192.120 / sikkerhedskopier / database.tjære.gz
dest: / sikkerhedskopier
brugernavn: bruger
adgangskode: 'pass'
tilstand: 0777
timeout: 5
Download filer fra den lokale filsti
For at downloade en fil fra en lokal filsti kan du bruge filen: // URI-ordningen efterfulgt af stien til filen.
Overvej følgende playbook:
- værter: webservere- navn: Download fil fra den lokale filsti
blive: ja
get_url:
url: fil: /// sikkerhedskopier / sikker / konfiguration.tjære.gz
dest: / dev / null
Download FTP-filer
Downloading af FTP-filer svarer meget til processen beskrevet i det foregående afsnit. Alt hvad du skal gøre er at angive ftp: // som protokollen til serveren.
For at downloade en sikker fil skal du også tilføje loginoplysningerne som vist tidligere.
Overvej følgende playbook:
- værter: alleopgaver:
- navn: Download fil fra FTP-server
blive: ja
get_url:
url: ftp: // 192.168.11.101
dest: / sikkerhedskopier
tilstand: 0777
Ansible get_url Modulindstillinger
Get_url-modulet understøtter også forskellige muligheder, som du kan bruge til at specificere og overvåge fildownload og -styring. De tilgængelige muligheder med get_url-modulet inkluderer følgende:
- Backup: Backupmuligheden, en boolsk af ja og nej, giver dig mulighed for at specificere, om du vil oprette en sikkerhedskopi af den fil, der skal downloades.
- Gruppe: Gruppemuligheden specificerer den gruppe, der har ejerskab af den downloadede fil; denne mulighed er som chown-kommandoen i Unix.
- Overskrifter: Headers-indstillingen bruges til at specificere brugerdefinerede HTTP-headere i en ordbog i hash-format.
- http_agent: Indstillingen http_agent angiver HTTP-agenten.
- Ejer: Ejermuligheden specificerer ejeren af downloadfilerne.
- Seuser: Seuser-indstillingen indstiller brugeren i SELinux-filkonteksten.
- brug_proxy: Indstillingen use_proxy indstiller, om en proxy skal bruges. Hvis denne indstilling er indstillet til falsk, ignoreres alle fuldmagter, selvom du har angivet en i målværten.
Konklusion
Denne artikel diskuterede get_url-modulet i Ansible i detaljer og viste dig, hvordan du bruger dette modul til at downloade filer fra forskellige kilder. Du kan bruge denne artikel til at henvise til, hvordan du downloader filer i Ansible ved hjælp af get_url-modulet.