copy模組
copy模組是把本機的檔案複製到遠端機器,跟scp命令有點類似
常用引數如下:
src引數: 本地檔案路徑。必須引數
dest引數: 遠端機器路徑。必須引數
backup引數: 是否備份,若值是yes表示備份,如果不需要備份省略該引數。省略該引數後,若遠端機器有同名的檔案,遠端機器上的檔案會直接覆蓋
mode引數: 複製後的檔案許可權,比如:"0755","0644"。如果沒有該引數則複製後的檔案與原始檔許可權相同
例1:把本地複製到遠端機器不做備份,
[root@localhost ~]# ansible 192.168.233.167 -m copy -a "src=/root/test dest=/tmp/test"192.168.233.167 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": true, "checksum": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83", "dest": "/tmp/test", "gid": 0, "group": "root", "md5sum": "d8e8fca2dc0f896fd7cb4cb0031ba249", "mode": "0644", "owner": "root", "size": 5, "src": "/root/.ansible/tmp/ansible-tmp-1611939995.84-4445-83659486471571/source", "state": "file", "uid": 0}
例2: 把本地檔案複製到遠端機器並備份
[root@localhost ~]# ansible 192.168.233.167 -m copy -a "src=/root/test dest=/tmp/test backup=yes"192.168.233.167 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "backup_file": "/tmp/test.2953.2021-01-29@17:08:14~", "changed": true, "checksum": "1b7d20fc0014599208b7ccea75f6f0c959af283b", "dest": "/tmp/test", "gid": 0, "group": "root", "md5sum": "80b9455d8672a7e9a2c5120462b2963d", "mode": "0644", "owner": "root", "size": 10, "src": "/root/.ansible/tmp/ansible-tmp-1611940092.92-4528-54138861592249/source", "state": "file", "uid": 0}
此時,返回值會多一個"back_file"
如果本地檔案內容和遠端檔案一樣,則不會複製。返回內容也是深綠色的 ansible在複製檔案的時候會判斷檔案內容是否相同
關於ansible執行返回的顏色簡單說明一下:
綠色: 表示執行成功但是沒做任何修改
黃色:表示執行成功並做了修改
紅色:表示執行失敗
淺綠色:表示跳過此次操作
有一個引數需要拿出來單獨說一下,用到的可能不多,但可能會用到。
remote_src引數:這個引數表示操作都是在遠端機器上操作
此時的src表示的也是遠端機器的路徑,而不是本地的。dest也是遠端機器的路徑.
例1: 遠端機器上的檔案複製
[root@localhost ~]# ansible 192.168.233.167 -m copy -a "src=/tmp/dirtest dest=/root/dirtest backup=yes remote_src=yes"192.168.233.167 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/root/dirtest", "gid": 0, "group": "root", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0644", "owner": "root", "size": 0, "src": "/tmp/dirtest", "state": "file", "uid": 0}
上面示例因為remote_src=yes, 所以src=/tmp/dirtest 和dest=/root/dirtest的兩個路徑都是在遠端機器上。
fetch模組copy模組是把本機的檔案複製到遠端機器,而fetch模組是把遠端機器的檔案拉取到本地
fetch模組剛好和copy模組的操作是相反的。因此引數的含義也是相反的
src引數: 遠端機器上的檔案或資料夾
dest引數: 儲存到本地的目錄
例1:複製遠端檔案到本地
[root@localhost ~]# ansible 192.168.233.167 -m fetch -a "src=/etc/hosts dest=/home/"192.168.233.167 | CHANGED => { "changed": true, "checksum": "68991e742192b6cc45ad7b95eb88ea289658f65c", "dest": "/home/192.168.233.167/etc/hosts", "md5sum": "32d544b36aefb5a7f800e75cca57ce8b", "remote_checksum": "68991e742192b6cc45ad7b95eb88ea289658f65c", "remote_md5sum": null}
在本地/home目錄下會生成遠端機器IP的資料夾,拉取的檔案就在該目錄下。並且保留目錄結構
[root@localhost ~]# tree /home/192.168.233.167//home/192.168.233.167/└── etc └── hosts
這個模組很簡單,就不過多贅述。