上传文件
copy 模块
将文件从本地或远程计算机复制到远程计算机上的某个位置
参数说明
参数 | 类型 | 说明 |
---|---|---|
src | path | 需要上传的本地文件或目录,必须选 |
dest | path | 目标路径,路径可以绝对或相对,必须选 |
force | bool | 是否强制覆盖,默认值:True |
group & owner | str | 指定用户组和拥有者 |
backup | bool | 在覆盖之前备份源文件,yes 表示备份,no 表示不备份 |
mode | str | 文件权限设置 |
示例
- 复制具有所有者和权限的文件
- name: Copy file with owner and permissions
copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: '0644'
- 使用符号表示法复制具有所有者和权限的文件
- name: Copy file with owner and permission, using symbolic representation
copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: u=rw,g=r,o=r
- 将新的“ntp.conf”文件复制,如果原始文件与复制的版本不同,则备份原始文件
- name: Copy a new "ntp.conf" file into place, backing up the original if it differs from the copied version
copy:
src: /mine/ntp.conf
dest: /etc/ntp.conf
owner: root
group: root
mode: '0644'
backup: yes
synchronize 模块
synchronize 是 Rsync 的包装器
它可以使您的剧本中的常见任务快速而简单
参数说明
参数 | 类型 | 说明 |
---|---|---|
src & dest | path | 需要上传文件的本地路径与目标路径, 必须选 |
dest_port | int | 目标主机上ssh的端口号。默认为 ansible_ssh_port 或 ansible_port 的值 |
archive | bool | 显示rsync的存档标志所属信息 |
compress | bool | 在传输过程中压缩文件数据 |
copy_links | bool | 复制符号链接,是映射的文件复制 |
group & owner | bool | 保留文件的所属组与所属者 |
delete | bool | 删除“dest”中“src”路径中不存在的文件(传输后,而不是之前)默认值 False |
dirs | bool | 不递归地传输目录 默认值 False |
mode | str | 指定同步的方向 push 推送,pull 拉取 |
partial | bool | 告诉rsync保留部分文件,这将使文件其余部分的后续传输更快 |
perms | bool | 保留权限 |
rsync_opts | list | 通过传入数组来指定其他rsync选项。 |
示例
- 将控制计算机上的src同步到远程主机上的dest
- name: Synchronization of src on the control machine to dest on the remote hosts
synchronize:
src: some/relative/path
dest: /some/absolute/path
- 使用rsync协议进行同步(推送)
- name: Synchronization using rsync protocol (push)
synchronize:
src: some/relative/path/
dest: rsync://somehost.com/path/
- 使用rsync协议进行同步(拉取)
- name: Synchronization using rsync protocol (pull)
synchronize:
mode: pull
src: rsync://somehost.com/path/
dest: /some/absolute/path/
- 控制机器上两条路径的同步
- name: Synchronization of two paths both on the control machine
synchronize:
src: some/relative/path
dest: /some/absolute/path
delegate_to: localhost
- 在一个远程主机上同步两个目录。
- name: Synchronize two directories on one remote host.
synchronize:
src: /first/absolute/path
dest: /second/absolute/path
delegate_to: "{{ inventory_hostname }}"
- 同步传入额外的rsync选项
- name: Synchronize passing in extra rsync options
synchronize:
src: /tmp/helloworld
dest: /var/www/helloworld
rsync_opts:
- "--no-motd"
- "--exclude=.git"
拉取文件
fetch 模块
此模块的工作方式与[copy]类似,但与之相反
它用于从远程计算机获取文件,并将它们本地存储在文件树中,按主机名组织
如果“dest”上已存在的文件与“src”不同,则将覆盖这些文件
参数说明
参数 | 类型 | 说明 |
---|---|---|
src & dest | path | 需要拉取文件的目标路径与本地路径, 必须选 |
flat | bool | 使用源文件的基本名称,类似于复制模块 |
示例
- 将文件存储到 /tmp/fetched/host.example.com/tmp/somefile
- name: Store file into /tmp/fetched/host.example.com/tmp/somefile
fetch:
src: /tmp/somefile
dest: /tmp/fetched
- 存储在相对于剧本的路径中
- name: Storing in a path relative to the playbook
fetch:
src: /tmp/uniquefile
dest: special/prefix-{{ inventory_hostname }}
flat: yes