当前位置 : 主页 > 操作系统 > centos >

Ansible copy模块手册

来源:互联网 收集:自由互联 发布时间:2022-06-20
Ansible copy模块: copy 模块是将ansible管理主机上的文件拷贝上远程主机中,与fetch相反,如果目标路径不存在,则自动创建。如果 src 的目录带“/” 则br复制该目录下的所有东西,如果 src 的目录

Ansible copy模块:

copy 模块是将ansible管理主机上的文件拷贝上远程主机中,与fetch相反,如果目标路径不存在,则自动创建。如果 src 的目录带“/” 则<br>复制该目录下的所有东西,如果 src 的目录不带“/”则连同该目录一起复制到目标路径.

 

src参数:用于指定需要copy的文件或目录,空文件夹不复制。

 

dest参数:用于指定文件将被拷贝到远程主机的哪个目录中,dest为必须参数。

 

content参数:当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。

 

force参数:当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。

 

backup参数:当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。

 

owner参数:指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。

 

group参数:指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。

 

mode参数: 设置文件权限,模式实际上是八进制数字(如0644),少了前面的零可能会有意想不到的结果。从版本1.8开始,可以将模式指定为符号模式(例如u+rwx或u=rw,g=r,o=r)

 

owner参数:设置文件/目录的所属用户,将被馈送到chown。

 

validate参数:复制前是否检验需要复制目的地的路径

copy模块,远程copy文件:

ansible all -m copy -a "src=/root/openfile.py backup=yes dest=/tmp"

Ansible copy模块手册_Ansible copy模块手册

目标路径目录没有会自动创建:

ansible all -m copy -a "src=/root/openfile.py dest=/dd/"

Ansible copy模块手册_ansible_02

Dest目标路径写多个,命令行最后一个dest路径为准:

ansible all -m copy -a "src=/root/openfile.py dest=/dd/ dest=/tmp/ owner=root group=root mode=644"

Ansible copy模块手册_ansible_03 

测试:force=yes:目标路径已经存在相同的文件名,且文件内容不相同,是否强制覆盖?

ansible all -m copy -a "src=/root/openfile2.py dest=/tmp/openfile.py owner=root group=root mode=644"

ansible all -m copy -a "src=/root/openfile.py dest=/tmp/openfile.py force=yes owner=root group=root mode=644"

测试结果:带不带force,目标文件都会被覆盖,而且也不会备份。

Ansible copy模块手册_Ansible copy模块手册_04 

content参数,指将content的内容复制到远程目标文件中:

 ansible all -m copy -a 'content="hello world" dest=/tmp/testfile'

Ansible copy模块手册_Ansible copy模块手册_05

 Ansible copy模块手册_ansible_06

Copy目录测试:

/root/nfs目录复制到/tmp目录下:

ansible test -m copy -a "src=/root/nfs dest=/tmp/"

Ansible copy模块手册_ansible_07

copy目录,测试带/和不带/的区别:

ansible test -m copy -a "src=/root/nfs/ dest=/tmp/"

源目录带/,会把/下所有的文件copy到目标地址。

Ansible copy模块手册_ansible_08  

Copy模块playbook的使用:

[root@master ~]# cat copyfile.yml
---
- hosts: all
tasks:
- name: copy file
copy:
src: "/root/openfile.py"
dest: "/tmp"

 Ansible copy模块手册_ansible_09 

copy目标文件赋予用户、组、权限:

[root@master ~]# cat copyfile.yml
---
- hosts: all
tasks:
- name: copy file
copy: src="/root/openfile.py" dest="/tmp" owner=root group=root mode="u=rw,g=r,o=r"

 Ansible copy模块手册_ansible_10

copy多个文件赋予用户、组、权限:

[root@master ~]# cat copyfile2.yml
---
- hosts: all
remote_user: root
gather_facts: false
tasks:
- name: "copy many file to dest"
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
mode: 644
with_items:
- {src: "/root/openfile.py", dest: "/opt/" }
- {src: "/root/openfile2.py", dest: "/tmp/copymodule" }
- {src: "/root/nginx.yaml", dest: "/opt/nginx2.yaml" }

 Ansible copy模块手册_ansible_11

 

 

上一篇:Ansible Service模块手册
下一篇:没有了
网友评论