Ansible Copy

Ansible poskytuje funkci kopírování souborů a adresářů pomocí modulů copy a fetch. Modul copy je univerzální.

Modul copy slouží ke kopírování souborů a adresářů z místního počítače na vzdálené servery. A modul fetch ke kopírování dat ze vzdáleného počítače na místní počítač.

Pokud chcete kopírovat soubory po nahrazení proměnnými, například konfigurační soubory se změnami IP, nebo můžete použít také modul template. Pomocí tohoto modulu můžete provádět mnoho složitých úloh.

Kopírování souborů z lokálního na vzdálený počítač

Modul kopírování slouží ke kontrole souboru nastaveného v parametru src, na lokálním počítači. A poté zkopíruje data do cesty ke vzdálenému počítači zadané v parametru destpath.

V níže uvedeném příkladu zkopírujeme soubor sample.txt v domovském adresáři místního počítače, do cílového adresáře /tmp na vzdáleném serveru. dokud nezadáme pro soubor žádné oprávnění, je výchozí oprávnění pro vzdálený soubor nastaveno jako -rw-rw-r-(0664).

Případ 1: Pokud se soubor na vzdáleném serveru již nachází, ale obsah zdrojového souboru je jiný, pak bude cílový soubor změněn. To můžete ovlivnit nastavením parametru force. Výchozí hodnota je nastavena na ano. Ve výchozím nastavení tedy dojde k úpravě souboru.

Pokud nechcete, aby byl soubor upraven, pokud je zdrojový soubor jiný, pak můžete nastavit hodnotu Ne. Následující úloha zkopíruje soubor, pokud soubor na vzdáleném serveru neexistuje.

Případ 2: Pokud soubor nebyl nalezen na místním počítači, Ansible vyhodí chybu.

Například: fatal: : FAILED!=> {„changed“: false, „failed“: true, „msg“: „nelze najít ‚~/sample.txt‘ v očekávaných cestách.“}

Kopírování adresářů z místního na vzdálený

Složky nebo adresáře můžete kopírovat také pomocí modulu Ansible copy. Pokud je cesta ‚src‘ adresář, bude zkopírována rekurzivně. Nebo bude zkopírován celý adresář.

Pro tuto úlohu existují dvě různé varianty. V závislosti na tom, zda je na konci cesty ‚src‘ znak ‚/‘, nebo ne.

První metoda vytvoří na vzdáleném serveru adresář s názvem nastaveným v parametru src. Pak do tohoto adresáře zkopíruje a vloží obsah zdrojového adresáře.

Pokud chcete toto chování, pak za cestu v parametru src neuvádí znak ‚/‘.

V níže uvedeném příkladu nejprve vytvoří adresář s názvem copy_dir_ex v /tmp vzdáleného serveru.

Kopírování souborů mezi adresáři na vzdáleném počítači

Ansible copy umožňuje kopírovat soubory z jednoho adresáře do jiného na stejném vzdáleném počítači. To se však týká pouze souborů, nikoli adresářů. Pomocí parametru remote_src můžete Ansible sdělit své záměry.

Následující kód zkopíruje /tmp/test.txt do domovského adresáře uživatele (/home//).

.