ansible.builtin.copy
copy 可以把檔案複製到連線的主機去。
目的地一定都是連線過去的那台主機,例如下面的例子就是把本地主機上的 README.md 複製到連線主機上的 /tmp/README.md
---
- name: Example for ansible.builtin.copy
hosts: all
tasks:
- name: Copy local file to target
copy:
src: README.md
dest: /tmp/README.md
那如果要複製連線主機上的檔案呢?那就要加上 remote_src: true
---
- name: Example for ansible.builtin.copy
hosts: all
tasks:
- name: Copy file on target to target
copy:
remote_src: true
src: /etc/os-release
dest: /tmp/os-release
在複製時,來源可以直接使用文字,copy 會把文字作為檔案的內容。
---
- name: Example for ansible.builtin.copy
hosts: all
tasks:
- name: Copy content to target
copy:
content: "Hello world!"
dest: /tmp/README.md
如果連線主機上的檔案已經存在,可以使用 backup: true
來要求備份,檔案在備份後,檔名會是原來的檔名加上日期。
複製時,也可以指定擁有者、權限、SELinux 屬性等等。
---
- name: Example for ansible.builtin.copy
hosts: all
tasks:
- name: Copy content to target
ansible.builtin.copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: u+rw,g-wx,o-rwx
backup: true
force 是一個需要特別說明的部份:
- force 為 true 時,當連線主機上的檔案內容跟原始檔不相符時,就寫入。
- force 為 false 時,當連線主機上沒有這檔案才寫入,如果已經有這檔案了,就不寫入。
ansible.builtin.copy 是最常被使用到的模組,請務必熟悉。
參考資料: