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.