Ansible Copy

Az Ansible a fájlok és könyvtárak másolását biztosítja a copy és fetch modulok segítségével. A copy modul sokoldalúan használható.

A copy modult fájlok és mappák másolására használjuk a helyi gépről a távoli szerverekre. A fetch modul pedig adatok másolására a távoli gépről a helyi gépre.

Ha változókkal való helyettesítés után szeretnénk fájlokat másolni, például konfigurációs fájlokat IP-változásokkal, vagy használhatjuk a template modult is. Ezzel a modullal sok bonyolult feladatot végezhet el.

Fájlok másolása a helyi gépről a távolira

A másoló modul a src paraméterben beállított fájl ellenőrzésére szolgál, a helyi gépen. Majd átmásolja az adatot a destpath-ban megadott távoli gép elérési útvonalára.

Az alábbi példában a helyi gép home könyvtárában lévő sample.txt fájlt másoljuk át a távoli szerveren lévő /tmp könyvtárba. amíg nem adunk meg semmilyen jogosultságot a fájlhoz, addig a távoli fájl alapértelmezett jogosultsága -rw-rw-r-r-(0664).

1. eset: Ha a fájl már megtalálható a távoli kiszolgálón, de a forrásfájl tartalma más, akkor a célfájl módosul. Ezt a force paraméter beállításával szabályozhatja. Az alapértelmezett érték yes. Tehát alapértelmezés szerint módosítja a fájlt.

Ha nem szeretné, hogy a fájl módosuljon, ha a forrásfájl más, akkor beállíthatja a No értéket. A következő feladat másolja a fájlt, ha a fájl nem létezik a távoli kiszolgálón.

2. eset: Ha a fájl nem található a helyi gépen, az Ansible hibát dob.

Például: fatal: : FAILED!=> {“changed”: false, “failed”: true, “msg”: “unable to find ‘~/sample.txt’ in expected paths.”}

Copying Directories from Local to Remote

Mappákat vagy könyvtárakat is másolhatunk az Ansible copy modul segítségével. Ha az ‘src’ útvonal egy könyvtár, akkor az rekurzívan lesz másolva. Vagy a teljes könyvtár lesz másolva.

Ezzel a feladattal kapcsolatban két különböző variáció létezik. Attól függően, hogy az ‘src’ elérési útvonal végpontján a ‘/’ karakter szerepel-e vagy sem.

Az első módszer létrehoz egy könyvtárat a távoli szerveren, az src paraméterben megadott névvel. Ezután a forrásmappa tartalmát másolja és beilleszti ebbe a könyvtárba.

Ha ezt a viselkedést szeretné, akkor az src paraméterben az elérési útvonal után nem adja meg a ‘/’ karaktert.

A lenti példában először létrehoz egy copy_dir_ex nevű könyvtárat a távoli kiszolgáló /tmp könyvtárában.

Fájlok másolása távoli gépen lévő könyvtárak között

Az Ansible copy lehetővé teszi a fájlok másolását az egyik könyvtárból egy másikba ugyanazon a távoli gépen. De ez csak a fájlokra vonatkozik, a könyvtárakra nem. A remote_src paramétert használhatja, hogy az Ansible tudassa a szándékát.

Az alábbi kód a /tmp/test.txt állományt a felhasználó otthoni könyvtárába (/home//) másolja.