檔案傳輸 - copy 模組

  1. Ansible 可以用並行的方式同時 scp 大量的檔案到多台主機,完整文件可用 ansible-doc 查詢 copy 模組文件。
    ceuser@deyu:~/ansible_pb$ ansible-doc copy | grep -A8 ^EX
    EXAMPLES:
    
    - name: Copy file with owner and permissions
      ansible.builtin.copy:
        src: /srv/myfiles/foo.conf
        dest: /etc/foo.conf
        owner: foo
        group: foo
        mode: '0644'
    
  2. 先編輯一個測試檔 adhoc.txt
    ceuser@deyu:~/ansible_pb$ echo 'ad-hoc file transfer' > adhoc.txt
    ceuser@deyu:~/ansible_pb$ cat adhoc.txt
    ad-hoc file transfer
    
  3. 使用 copy 模組將 adhoc.txt 複製到 dev 群組裡所有主機的 /home/ceuser 目錄:
    ceuser@deyu:~/ansible_pb$ ansible dev -m copy -a "src=adhoc.txt dest=/home/ceuser/"
    kvm11 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python3"
        },
        "changed": true,
        "checksum": "5ced2367ff60e242577e9a5d90a61233d9336c97",
        "dest": "/home/ceuser/adhoc.txt",
        "gid": 0,
        "group": "root",
        "md5sum": "bb660c5cbe1c8defa638bd8e7592b48a",
        "mode": "0644",
        "owner": "root",
        "secontext": "unconfined_u:object_r:user_home_t:s0",
        "size": 21,
        "src": "/root/.ansible/tmp/ansible-tmp-1770260586.953098-81322-277034741284408/source",
        "state": "file",
        "uid": 0
    }
    
  4. 使用 shell 模組查看 dev 群組裡所有主機,有複製過來的檔案 adhoc.txt,由於 ansible.cfg 設定遠端用戶為 root,所以擁有者及群組皆為 root。
    ceuser@deyu:~/ansible_pb$ ansible dev -m shell -a "ls -l /home/ceuser/"
    kvm11 | CHANGED | rc=0 >>
    total 4
    -rw-r--r--. 1 root root 21 Feb  5 11:03 adhoc.txt