Ansible系列(9) Copy模块

copy模块

copy模块在ansible里的角色就是把ansible执行机器上的文件拷贝到远程节点上。

与fetch模块相反的操作。

常用模块参数

参数名 是否必须 默认值 选项 说明
src no 用于定位ansible执行的机器上的文件,需要绝对路径。如果拷贝的是文件夹,那么文件夹会整体拷贝,如果结尾是”/”,那么只有文件夹内的东西被考过去。一切的感觉很像rsync
content no 用来替代src,用于将指定文件的内容,拷贝到远程文件内
dest yes 用于定位远程节点上的文件,需要绝对路径。如果src指向的是文件夹,这个参数也必须是指向文件夹
backup no no yes/no 备份远程节点上的原始文件,在拷贝之前。如果发生什么意外,原始文件还能使用。
directory_mode no 这个参数只能用于拷贝文件夹时候,这个设定后,文件夹内新建的文件会被拷贝。而老旧的不会被拷贝
follow no no yes/no 当拷贝的文件夹内有link存在的时候,那么拷贝过去的也会有link
force no yes yes/no 默认为yes,会覆盖远程的内容不一样的文件(可能文件名一样)。如果是no,就不会拷贝文件,如果远程有这个文件
group no 设定一个群组拥有拷贝到远程节点的文件权限
mode no 等同于chmod,参数可以为“u+rwx or u=rw,g=r,o=r”
owner no 设定一个用户拥有拷贝到远程节点的文件权限

案例

# 把/srv/myfiles/foo.conf文件拷贝到远程节点/etc/foo.conf,并且它的拥有者是foo,拥有它的群组是foo,权限是0644
- copy: src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode=0644

# 跟上面的案例一样,不一样的只是权限的写法
- copy: src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode="u=rw,g=r,o=r"

# 另外一个权限的写法
- copy: src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode="u+rw,g-wx,o-rwx"

# 拷贝/mine/ntp.conf到远程节点/etc/ntp.conf,并且备份远程节点的/etc/ntp.conf。
- copy: src=/mine/ntp.conf dest=/etc/ntp.conf owner=root group=root mode=644 backup=yes

常用参数返回值

参数名 参数说明 返回值 返回值类型 样例
src 位于ansible执行机上的位置 changed string /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source
backup_file 将原文件备份 changed and if backup=yes string /path/to/[email protected]:09~
uid 在执行后,拥有者的ID success int 100
dest 远程节点的目标目录或文件 success string /path/to/file.txt
checksum 拷贝文件后的checksum值 success string 6e642bb8dd5c2e027bf21dd923337cbb4214f827
md5sum 拷贝文件后的md5 checksum值 when supported string 2a5aeecc61dc98c4d780b14b330e3282
state 执行后的状态 success string file
gid 执行后拥有文件夹、文件的群组ID success int 100
mode 执行后文件的权限 success string 0644
owner 执行后文件所有者的名字 success string httpd
group 执行后文件所有群组的名字 success string httpd
size 执行后文件大小 success int 1220

今天的这个模块有点多,看明白没?下一次会有简单的案例了。

时间: 2024-08-25 09:51:15

Ansible系列(9) Copy模块的相关文章

ansible系列第二篇(模块使用)

ansible系列第二篇(模块使用) 模块使用 设置ansible提权 在hosts文件加入sudo提权的密码: 18.18.23.102 ansible_become_pass='passwd' 执行: ansible test -S -R root -m shell -a "ls -l /" 查看ansible有那些模块: ansible-doc -l 获取各个模块详细帮助信息 ansible-doc -s ping ping模块: ansible test -m ping 从受控

自动化运维系列之Ansible命令应用基础(模块的应用)【持续更新中···】

自动化运维系列之Ansible命令应用基础(模块的应用) 模块简介 Ansible可以使用命令行方式进行自动化管理,基本语法如下: ansible <host-pattern> [-m module_name] [-a args] <host-pattern> 对哪些主机生效 [-m module_name] 需要使用的模块 [-a args] 模块特有的参数,这里在使用时需加单引号哦! Ansible的命令行管理工具都是由一系列模块.参数所支持的,可以在命令行后加上-h或--he

Ansible安装及部分模块初步使用

Ansible安装及初步使用 Ansible概述 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统的方式进行维护工作会使得工作效率低下.这时,部署自动化运维就可以尽可能安全.高效地完成这些工作. 一般会把自动化运维工具划分为两类:一类是使用代理工具,与就是基于专用的Agent程序完成管理功能,如:Puppet.Func.Zabbix等:另外一类是不需要配置代理工具的,可以基于SSH服务来完成管理功能,如:Ansible.Fabric等. Ansi

详解Ansible服务常用命令模块

ansible可以使用命令行方式进行自动化管理,基本语法如下: ansible 主机名 -m 模块名称 -a 模块特有参数 ansible的命令行管理工具都是由一系列模块.参数所支持的,可以在命令后面加上-h或--help获取帮助.如使用ansible-doc -h或者ansible-doc --help查看其帮助信息ansible-doc是用来查看模块帮助信息的工具,最主要的选项 -l用来列出可使用的模块, -s用来列出某个模块的描述信息和使用示例. 以下是我列出yum模块的描述信息和操作动作

ansible之copy模块

有时需要把某个文件批量拷贝到其他主机上,那么ansible已经提供相应的模块了.那就是copy.. copy用法 [[email protected] ~]# ansible-doc -s copy less 436 Copyright (C) 1984-2009 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistr

ansible学习系列2-ansible常用模块使用

1. 查看支持的模块 [[email protected] ~]# ansible-doc -l 这里我们看下ansible的支持的模块个数 [[email protected] ~]# ansible-doc -l |wc -l #查看支持的模块个数 1039 [[email protected] ~]# ansible --version #查看我们的ansible版本号 ansible 2.3.1.0 config file = /etc/ansible/ansible.cfg confi

ansible 模块之 copy模块详解

ansible copy 模块详解 ansible copy 模块主要用于文件或目录复制.详细如下: src ansible 端源文件或目录,空文件夹不复制 content 用来替代src 用于将指定的文件内容复制到远程文件 dest 客户端目标目录或文件,需要绝对路径 back_up 复制之前备份远程节点上的原始文件 directory_code 用于复制文件夹,新建文件会被复制,旧文件不会被复制 follow 支持link文件复制 force 覆盖远程主机不一致的内容 group 设定远程主

ansible的安装与介绍、host-pattern格式、ansible的command模块、ansible的shell模块、ansible的script模块、ansible的copy模块

一.ansible的安装与介绍 ansible需要安装在管控机上 首先安装wget(如果机器上有可以忽略) 下载安装wget yum install -y wget 将epel源下载安装到本地 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 安装ansible yum install -y ansible ansible的命令格式 Usage: ansible <host-pattern>

ansible copy 模块 changed false 没有变化

在分发配置文件的时候,我用命令ansible big_hosthub  -m copy -a "src=/home/clouder/deploy-conf.xml dest=/home/clouder/deploy-conf.xml force=yes"  不起作用,配置文件还是原来的文件,即使使用了force=yes 但是使用以下文件就起作用 ansible new_edgeserver  -m synchronize -a "src=/home/clouder/deplo