Ansible Copy

Ansible biedt de functionaliteit van het kopiëren van de bestanden en mappen met behulp van de kopieer en haal modules. De kopieermodule is veelzijdig.

De kopieermodule wordt gebruikt om bestanden en mappen van de lokale machine naar de externe servers te kopiëren. En de fetch module om gegevens te kopiëren van de remote machine naar de lokale machine.

Als je bestanden wilt kopiëren na het vervangen door variabelen, zoals config bestanden met IP wijzigingen, of je kunt de template module ook gebruiken. U kunt veel ingewikkelde taken uitvoeren met deze module.

Kopiëren van bestanden van Lokaal naar Remote

De kopieer module wordt gebruikt om het bestand te controleren in de src parameter, op de lokale machine. En dan kopieert hij de gegevens naar het pad op de externe machine dat is opgegeven in het destpath.

In het onderstaande voorbeeld kopiëren we het sample.txt bestand in de home directory van de lokale machine, naar de bestemming is de /tmp directory op de externe server. Zolang we geen toestemming voor het bestand opgeven, is de standaard toestemming voor het bestand op afstand ingesteld als -rw-rw-r-(0664).

Geval 1: Als het bestand al aanwezig is op de server op afstand, maar de inhoud van het bronbestand is anders, dan zal het doelbestand worden gewijzigd. U kunt dit controleren door de force parameter in te stellen. De standaardwaarde is ingesteld op ja. Dus het wijzigt het bestand standaard.

Als u niet wilt dat het bestand wordt gewijzigd, als het bronbestand anders is, dan kunt u het instellen op Nee. De volgende taak zal het bestand kopiëren als het bestand niet bestaat op de externe server.

Geval 2: Als het bestand niet gevonden op de lokale machine, de Ansible gooi een fout.

Voorbeeld: fataal: : FAILED!=> {“changed”: false, “failed”: true, “msg”: “unable to find ‘~/sample.txt’ in expected paths.”}

Kopiëren van mappen van lokaal naar extern

U kunt ook mappen of directories kopiëren met de Ansible kopieermodule. Als het ‘src’ pad een directory is, dan zal deze recursief worden gekopieerd. Of de hele directory wordt gekopieerd.

Er zijn twee verschillende variaties voor deze taak. Afhankelijk van of je het ‘/’ teken aan het eindpunt van het ‘src’ pad hebt of niet.

De eerste methode maakt een directory aan op de remote server, met de naam zoals ingesteld in de src parameter. Dan zal het de inhoud van de bron map kopiëren en plakken in die map.

Als je dit gedrag wilt, dan geeft het niet de ‘/’ na het pad in de src parameter.

In het onderstaande voorbeeld wordt eerst een map met de naam copy_dir_ex in de /tmp van de externe server gemaakt.

Bestanden kopiëren tussen mappen op externe machine

Ansible copy staat u toe om bestanden van de ene map naar de andere op dezelfde externe machine te kopiëren. Maar dit is alleen voor bestanden, niet voor de directories. U kunt de remote_src parameter gebruiken om Ansible te laten weten wat uw bedoelingen zijn.

Onderstaande code kopieert /tmp/test.txt naar de home directory van de gebruiker (/home//).