Kot uporabnik Linuxa verjetno poznate orodja, ki omogočajo prenos datotek z oddaljenih strežnikov s protokoli HTTP, HTTPS in FTP, kot sta wget in cURL. Pri izvajanju nalog avtomatizacije boste morali občasno prenesti datoteke in pakete na oddaljene gostitelje. Čeprav lahko za izvajanje te funkcije uporabite wget in cURL na oddaljenih gostiteljih, lahko za uporabo teh orodij uporabite tudi modul Ansible get_url, ki je potreben za namestitev.
Ta vadnica vam pokaže, kako z ukazom Ansible get_url prenesete datoteke z oddaljenih strežnikov.
Preden začnemo, ukaz Ansible get_url zahteva naslednje predpogoje:
- Oddaljeni strežnik, s katerega je treba prenesti datoteke, mora imeti neposreden dostop do gostiteljskega strežnika.
- Gostiteljski strežnik mora podpirati protokola HTTP in HTTPS.
O modulu get_url
Preden se naučite, kako implementirati modul get_url, najprej o tem modulu nekaj stvari, ki jih je vredno razumeti. Modul get_url podpira naslednje funkcije:
- Prenos in preverjanje kontrolne vsote s strežnika
- Strežniki HTTP, HTTPS in FTP
- Proxy strežniki, ki jih lahko določi
_proxy direktiva - Nastavitev časovne omejitve za prejemanje zahtev
- Iskanje po spletu
- Osnovna spletna avtorizacija
Nato vam bomo pokazali, kako uporabljati modul get_url za prenos datotek z različnimi protokoli in konfiguracijami.
Uporaba modula get_url za pridobivanje datotek
Sledi nekaj primerov, ki jih lahko uporabite z uporabo modula get_url pri prenosu datotek z oddaljenega strežnika.
Prenesite datoteke s strežnika HTTP / HTTPS z neposrednim URL-jem
Razmislite o naslednjem priročniku, ki ustvari imenik v ~ /.local in uporablja modul get_url za prenos paketa Debian MySQL.
OPOMBA: Strežniške pakete MYSQL najdete v spodnjem viru:
https: // linkfy.v / mysql-pakete
- gostitelji: vsi- ime: Prenesite strežnik Debian MySQL s pomočjo HTTP / HTTPS
naloge:
- ime: Naredite imenik mysql-server v / home / user /.lokalno
mapa:
pot: ~ /.lokalni / mysql-strežnik
stanje: imenik
način: 0777
- ime: GET MySQL-strežniški paketi
get_url:
url: “https: // prenosi.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-sveženj.katran "
dest: ~ /.lokalni / mysql-strežnik
način: 0777
kontrolna vsota: md5: 5568e206a187a3b658392520540f556e
Zgornja knjiga se začne z ustvarjanjem imenika v $ HOME /.lokalni / mysql-strežnik, kjer naj bo shranjen preneseni paket. Če ustvarjate imenik v privilegiranem imeniku, ne pozabite uporabiti direktive 'postati'.
Nato playbook pokliče modul get_url in določi URL, s katerega želite prenesti paket, čemur sledi ciljni imenik, v katerega želite shraniti datoteko. V zadnjem odseku knjižice je določena kontrolna vsota md5 za preverjanje veljavnosti datoteke.
OPOMBA: V zgornji knjigi iger smo trdo kodirali kontrolno vsoto, vendar lahko določite URL, na katerem gostuje kontrolna vsota.
Ko zaženete knjigo iger, boste dobili rezultat, ki kaže na uspeh ali neuspeh nalog.
$ ansible-playbook download_mysql_server.yml PLAY [Prenesite strežnik Debian MySQL z uporabo HTTP / HTTPS] ************************************** ************************************************** ************************************************** ******************NALOGA [Zbiranje dejstev] *********************************************** **************************************************** ************************************************** *****************************************
ok: [35.222.210.12]
NALOGA [Naredi imenik mysql-server v / home / user /.lokalni] ************************************************** ************************************************** ************************************************** ***********
35.222.210.12: ok = 3 spremenjeno = 1 nedosegljivo = 0 neuspešno = 0 preskočeno = 0 rešeno = 0 prezrto = 0
Ko je postopek končan, se lahko prijavite v gostitelja in preverite, ali datoteka obstaja.
Prenesite datoteke s kontrolno vsoto sha256
Datoteke lahko tudi prenesete in jih preverite s kontrolno vsoto sha256, kot je prikazano v spodnjem primernem priročniku:
- gostitelji: vsi- ime: Prenesite strežnik Debian MySQL s pomočjo HTTP / HTTPS
naloge:
- ime: Naredite imenik mysql-server v / home / user /.lokalno
mapa:
pot: ~ /.lokalni / mysql-strežnik
stanje: imenik
način: 0777
- ime: GET MySQL-strežniški paketi
get_url:
url: https: // prenosi.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-sveženj.katran
dest: ~ /.lokalni / mysql-strežnik
način: 0777
kontrolna vsota: sha256: b5bb9d8014a0f9b1d61e21e796d78eefdf1352f23cd32812f4850b878ae4944c
Če želite namesto trdega kodiranja kontrolne vsote uporabiti URL, si oglejte naslednji primer:
- gostitelji: vsi- ime: Prenesite strežnik Debian MySQL s pomočjo HTTP / HTTPS
naloge:
- ime: Naredite imenik mysql-server v / home / user /.lokalno
mapa:
pot: ~ /.lokalni / mysql-strežnik
stanje: imenik
način: 0777
- ime: GET MySQL-strežniški paketi
get_url:
url: https: // prenosi.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-sveženj.katran
dest: ~ /.lokalni / mysql-strežnik
način: 0777
kontrolna vsota: sha256: https: // prenosi.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-sveženj.katran.sha265
Prenesite datoteke s časovno omejitvijo, če ne odgovorite
V nekaterih primerih imate morda določen URL vira, na katerega lahko traja dlje časa ali pa ni na voljo. To lahko povzroči prekinitev povezave, preden se strežnik odzove, saj je privzeta časovna omejitev običajno 10 sekund. Če želite izrecno določiti vrednost časovne omejitve, uporabite časovno omejitev:
Razmislite o naslednji knjigi iger:
- gostitelji: vsi- ime: Prenesite strežnik Debian MySQL s časovno omejitvijo
naloge:
- ime: Naredite imenik mysql-server v / home / user /.lokalno
mapa:
pot: ~ /.lokalni / mysql-strežnik
stanje: imenik
način: 0777
- ime: GET MySQL-strežniški paketi
get_url:
url: https: // prenosi.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-sveženj.katran
dest: ~ /.lokalni / mysql-strežnik
način: 0777
kontrolna vsota: sha256: https: // prenosi.mysql.com / archives / get / p / 23 / file / mysql-server_8.0.22-1debian10_amd64.deb-sveženj.katran.sha265
Časovna omejitev: 30
Zgornja knjiga navodil določa časovno omejitev 30 sekund in povezava bo prekinjena, če se strežnik ne odzove v nastavljenem času.
Prenesite datoteke z avtentikacijo
Če želite datoteko prenesti na strežnik, ki zahteva preverjanje pristnosti, boste morali določiti prijavne vrednosti.
Razmislite o naslednji knjigi iger:
- gostitelji: vsi- ime: Prenesite datoteko z avtentikacijo
postati: da
get_url:
url: http: // 102.15.192.120 / varnostne kopije / baza podatkov.katran.gz
dest: / varnostne kopije
uporabniško ime: uporabnik
geslo: 'pass'
način: 0777
časovna omejitev: 5
Prenesite datoteke iz lokalne datoteke
Če želite datoteko prenesti iz lokalne datoteke, lahko uporabite shemo file: // URI, ki ji sledi pot do datoteke.
Upoštevajte naslednjo knjigo iger:
- gostitelji: spletni strežniki- ime: Prenesite datoteko z lokalne datoteke
postati: da
get_url:
url: file: /// backups / secure / config.katran.gz
dest: / dev / null
Prenesite datoteke FTP
Prenos datotek FTP je zelo podoben postopku, opisanemu v prejšnjem razdelku. Vse kar morate storiti je, da kot protokol strežnika navedete ftp: //.
Če želite prenesti varno datoteko, morate dodati tudi prijavne podatke, kot je bilo prikazano prej.
Razmislite o naslednji knjigi iger:
- gostitelji: vsinaloge:
- ime: Prenesite datoteko s strežnika FTP
postati: da
get_url:
url: ftp: // 192.168.11.101
dest: / varnostne kopije
način: 0777
Ansible get_url Možnosti modula
Modul get_url podpira tudi različne možnosti, s katerimi lahko določite in nadzirate prenos in upravljanje datotek. Možnosti, ki so na voljo v modulu get_url, vključujejo naslednje:
- Rezerva: Možnost varnostne kopije, logična vrednost da in ne, vam omogoča, da določite, ali želite ustvariti varnostno kopijo datoteke, ki jo želite prenesti.
- Skupina: Možnost skupine določa skupino, ki je lastnik prenesene datoteke; ta možnost je kot ukaz chown v Unixu.
- Glave: Možnost glav se uporablja za določanje poglavij HTTP po meri v slovarju v razpršeni obliki.
- http_agent: Možnost http_agent določa agenta HTTP.
- Lastnik: Možnost lastnika določa lastnika datotek za prenos.
- Seuser: Možnost uporabnika nastavi uporabnika v kontekst datoteke SELinux.
- use_proxy: Možnost use_proxy določa, ali naj bo uporabljen proxy. Če je ta možnost nastavljena na false, bodo vsi posredniški strežniki prezrti, tudi če imate v ciljnem gostitelju enega.
Zaključek
Ta članek je podrobno obravnaval modul get_url v programu Ansible in vam pokazal, kako uporabljati ta modul za prenos datotek iz različnih virov. V tem članku se lahko sklicujete na prenos datotek v programu Ansible z uporabo modula get_url.