首頁>技術>

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/dirtestdest=/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

這個模組很簡單,就不過多贅述。

13
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 翻譯:《實用的Python程式設計》02_Hello_world