Ansible: Dosya, Dizin veya Komut Dosyası yerel ana bilgisayardan Uzak ana bilgisayara nasıl kopyalanır?
Yayınlanan: 2019-02-24 BT yönetim departmanının bir parçası olarak, insanlar lots of scripts
ve komut satırı aracıyla ilgilenir. Binlerce uzak ana bilgisayara dosya veya komut dosyası kopyaladığınız günlük bir durumla karşı karşıya olduğunuzdan eminim.
BT departmanı çalışanları, yalnızca thousands of hosts
oturum açıp komut dosyasını manuel olarak çalıştırmaz. İşte bu yüzden Ansible devreye giriyor. Ansible, bizim için ücretsiz olarak sunulan çok güçlü bir BT yönetim çözümüdür.
Bu eğitimde, dosyaları Ansible kullanarak uzak ana bilgisayara kopyalama adımlarını inceleyeceğiz.
Ne yapacağız?
crunchify.txt
dosyasını /opt/ashah/
uzak ana bilgisayar 192.66.129.83
hedef dizinine /opt/ashah/
.
Aşama 1
Ansible'ı Linux Ubuntu veya macOS'a yükleyin. Ayrıntılı adımların üzerinden geçmek için öğreticileri izleyin.
Adım 2
Bu eğitim için bazı temel bilgileri ve dosya konumunu anlayalım:
- Yapılandırma dosyası konumu: /etc/ansible/ansible.cfg
- Komut dosyası dosyası: /opt/ashah/crunchify.yml
- hosts dosyası: /opt/ashah/hosts
- kopyalanacak dosya: /opt/ashah/crunchify.txt (test dosyası)
Aşama 3
crunchify.yml
dosya içeriği.
1 2 3 4 5 6 7 8 |
root @ localhost : / opt / ashah # cat crunchify.yml --- - hosts : crunchify - group tasks : - name : copy file to remote host copy : src : / opt / ashah / crunchify . txt dest : / opt / ashah |
4. Adım
dosya içeriğini hosts
. IP adresini uzak sunucunuza değiştirdiğinizden emin olun.
1 2 3 4 |
root @ localhost : / opt / ashah # cat hosts #crunchify-group as a sample [ crunchify - group ] 192.66.129.83 |
Adım 5
Aşağıdaki içerikle crunchify.txt
dosyası oluşturun.
1 2 3 4 |
root @ localhost : / opt / ashah # cat crunchify.txt This is sample example copying file to remote location using Ansible . More ansible tutorials at https : //crunchify.com/tag/ansible/ |
Adım-6
Dosyayı uzak ana bilgisayara kopyalamak için bu komutu çalıştırın:
-
Command
: ansible-playbook -b -vvv -u root crunchify.yml -kkkk –ekstra değişkenler “crunchify-group” -i ana bilgisayarlar
tüm parametreleri anlayalım:
- -b : hale ile işlemleri çalıştırın ( —become ile aynı).
- -vvv : ayrıntılı mod (daha fazlası için -vvv, bağlantı hata ayıklamasını etkinleştirmek için -vvvv).
- -u : bu kullanıcı olarak bağlan (varsayılan=Yok).
- -kkkk : bağlantı şifresi ister.
- –extra-vars : dosya adının başına @ ekleniyorsa, ek değişkenleri anahtar=değer veya YAML/JSON olarak ayarlayın.
- -i : envanter ana bilgisayar yolunu veya virgülle ayrılmış ana bilgisayar listesini belirtin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
root @ localhost : / opt / ashah # ansible-playbook -b -vvv -u root crunchify.yml -kkkk --extra-vars "crunchify-group" -i hosts Using / etc / ansible / ansible . cfg as config file SSH password : / opt / ashah / hosts did not meet host_list requirements , check plugin documentation if this is unexpected / opt / ashah / hosts did not meet script requirements , check plugin documentation if this is unexpected Parsed / opt / ashah / hosts inventory source with ini plugin PLAYBOOK : crunchify . yml * ************************************************************************************************************************ 1 plays in crunchify . yml PLAY [ crunchify - group ] ********************************************************************************************************************************* TASK [ Gathering Facts ] ************************************************************************************************************************ < 192.66.129.83 > ESTABLISH SSH CONNECTION FOR USER : root < 192.66.129.83 > SSH : EXEC sshpass - d9 ssh - C - o ControlMaster = auto - o ControlPersist = 60s - o User = root - o ConnectTimeout = 10 - o ControlPath =/ root / . ansible / cp / 5fca43321f 192.66.129.83 '/bin/sh -c ' "'" 'echo ~root && sleep 0' "'" '' < 192.66.129.83 > ( 0 , '/root\n' , '' ) < 192.66.129.83 > ESTABLISH SSH CONNECTION FOR USER : root < 192.66.129.83 > SSH : EXEC sshpass - d9 ssh - C - o ControlMaster = auto - o ControlPersist = 60s - o User = root - o ConnectTimeout = 10 - o ControlPath =/ root / . ansible / cp / 5fca43321f 192.66.129.83 '/bin/sh -c ' "'" '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-tmp-1550966284.57-6253496643791 `" && echo ansible-tmp-1550966284.57-6253496643791="` echo /root/.ansible/tmp/ansible-tmp-1550966284.57-6253496643791 `" ) && sleep 0' "'" '' < 192.66.129.83 > ( 0 , 'ansible-tmp-1550966284.57-6253496643791=/root/.ansible/tmp/ansible-tmp-1550966284.57-6253496643791\n' , '' ) Using module file / usr / lib / python2 . 7 / dist - packages / ansible / modules / system / setup . py < 192.66.129.83 > PUT / root / . ansible / tmp / ansible - local - 32435HXzj7o / tmpjFxUXp TO / root / . ansible / tmp / ansible - tmp - 1550966284.57 - 6253496643791 / AnsiballZ_setup . py < 192.66.129.83 > SSH : EXEC sshpass - d9 sftp - o BatchMode = no - b - - C - o ControlMaster = auto - o ControlPersist = 60s - o User = root - o ConnectTimeout = 10 - o ControlPath =/ root / . ansible / cp / 5fca43321f '[192.66.129.83]' < 192.66.129.83 > ( 0 , 'sftp> put /root/.ansible/tmp/ansible-local-32435HXzj7o/tmpjFxUXp /root/.ansible/tmp/ansible-tmp-1550966284.57-6253496643791/AnsiballZ_setup.py\n' , '' ) < 192.66.129.83 > ESTABLISH SSH CONNECTION FOR USER : root < 192.66.129.83 > ESTABLISH SSH CONNECTION FOR USER : root < 192.66.129.83 > SSH : EXEC sshpass - d9 ssh - C - o ControlMaster = auto - o ControlPersist = 60s - o User = root - o ConnectTimeout = 10 - o ControlPath =/ root / . ansible / cp / 5fca43321f 192.66.129.83 '/bin/sh -c ' "'" 'rm -f -r /root/.ansible/tmp/ansible-tmp-1550966284.57-6253496643791/ > /dev/null 2>&1 && sleep 0' "'" '' < 192.66.129.83 > ( 0 , '' , '' ) ok : [ 192.66.129.83 ] TASK [ deploy topology ] ******************************************************************************************************************************************** ok : [ 192.66.129.83 ] = > { "changed" : false , "checksum" : "289b0c36372210c92bf028f2a19d57333af4d63c" , "dest" : "/opt/ashah/crunchify.txt" , "diff" : { "after" : { "path" : "/opt/ashah/crunchify.txt" } , "before" : { "path" : "/opt/ashah/crunchify.txt" } } , "gid" : 0 , "group" : "root" , "invocation" : { "module_args" : { "_diff_peek" : null , "_original_basename" : "crunchify.txt" , "access_time" : null , "access_time_format" : "%Y%m%d%H%M.%S" , "attributes" : null , "backup" : null , "content" : null , "delimiter" : null , "dest" : "/opt/ashah" , "directory_mode" : null , "follow" : true , "force" : false , "group" : null , "mode" : null , "modification_time" : null , "modification_time_format" : "%Y%m%d%H%M.%S" , "owner" : null , "path" : "/opt/ashah/crunchify.txt" , "recurse" : false , "regexp" : null , "remote_src" : null , "selevel" : null , "serole" : null , "setype" : null , "seuser" : null , "src" : null , "state" : "file" , "unsafe_writes" : null } } , "mode" : "0644" , "owner" : "root" , "path" : "/opt/ashah/crunchify.txt" , "size" : 21 , "state" : "file" , "uid" : 0 } PLAY RECAP * ******************************************************************************************************************************************************* 192.66.129.83 : ok = 2 changed = 0 unreachable = 0 failed = 0 |
Bu kadar. Dosyayı başarıyla kopyaladınız.

Dosyanın yeni uzak ana bilgisayara kopyalanıp kopyalanmadığı nasıl doğrulanır?
Sadece uzak ana bilgisayara giriş yapın ve /opt/ashah
konumunu kontrol edin ve crunchify.txt
dosyasını göreceksiniz.
Bir dizin içeriği başka bir dizine nasıl kopyalanır?
Sadece crunchify.yml
dosyasının src
ve desc
değerini değiştirin. İşte güncellenmiş bir crunchify.yml dosyası.
1 2 3 4 5 6 7 8 |
root @ localhost : / opt / ashah # cat crunchify.yml --- - hosts : crunchify - group tasks : - name : copy all files from folder to remote host copy : src : / opt / ashah / dest : / opt / ashah / |
/opt/ashah/
klasörü altındaki tüm dosyalar şimdi uzak ana bilgisayarlara kopyalanacak.
Ansible kullanarak uzak konuma dosyayla ilgili herhangi bir sorunuz varsa bana bildirin.