首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux云计算运维架构师(连载)-自动化运维ansible-09

Linux云计算运维架构师(连载)-自动化运维ansible-09

原创
作者头像
用户1880875
修改2021-07-05 14:28:03
修改2021-07-05 14:28:03
7570
举报

1.1.3 复制模块

copy模块可以将Ansible服务器中的文件复制到客户机中。下面将/etc/hosts文件复制至webserver组中客户机的/tmp文件下,命名为“2.txt”,设置文件所有者为“root”,属组为“bin”,操作权限为“777”,代码及结果如下所示。

[root@ansible ~]# ansible webserver -m copy -a 'src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=777 backup=yes'

host2 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"checksum": "3be18215bc6a05231f0ae11afa87879103ab5474",

"dest": "/tmp/2.txt",

"gid": 1,

"group": "bin",

"mode": "0777",

"owner": "root",

"path": "/tmp/2.txt",

"size": 244,

"state": "file",

"uid": 0

}

host3 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"checksum": "3be18215bc6a05231f0ae11afa87879103ab5474",

"dest": "/tmp/2.txt",

"gid": 1,

"group": "bin",

"mode": "0777",

"owner": "root",

"path": "/tmp/2.txt",

"size": 244,

"state": "file",

"uid": 0

}

host1 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"checksum": "3be18215bc6a05231f0ae11afa87879103ab5474",

"dest": "/tmp/2.txt",

"gid": 1,

"group": "bin",

"mode": "0777",

"owner": "root",

"path": "/tmp/2.txt",

"size": 244,

"state": "file",

"uid": 0

}

通过代码的反馈结果可以看到,host1、host2、host3均已完成复制操作,分别查看这三台客户机的复制结果,代码如下所示。

[root@host1 ~]# ll /tmp/

总用量 4

-rwxrwxrwx 1 root bin 244 3月 23 13:51 2.txt

drwx------ 3 root root 17 12月 9 2019 systemd-private-d42b8c706e01472da32f001324dcc7c4-chronyd.service-pKTwcf

[root@host2 ~]# ll /tmp

总用量 4

-rwxrwxrwx 1 root bin 244 3月 23 13:51 2.txt

drwx------ 3 root root 17 3月 23 09:44 systemd-private-4b4ad22c2195448dbbeadc60e87f2d57-chronyd.service-RWH966

drwx------ 2 root root 6 3月 23 09:44 vmware-root_6133-1958488615

[root@host3 ~]# ll /tmp

total 4

-rwxrwxrwx 1 root bin 244 Mar 22 22:51 2.txt

drwx------ 3 root root 17 Mar 22 18:44 systemd-private-764bd538296d438fadcf4807862e2fdc-chronyd.service-1MFCjn

drwx------ 3 root root 17 Mar 22 18:44 systemd-private-764bd538296d438fadcf4807862e2fdc-httpd.service-LTSVRz

drwx------ 3 root root 17 Feb 10 2020 systemd-private-e96d709738d44b1b82ceca8d31a58867-httpd.service-TlnUir

drwx------ 2 root root 6 Mar 22 18:44 vmware-root_6344-1003141338

通过代码的反馈结果可以看到,host1、host2、host3的/tmp文件下都存在2.txt文件,说明复制操作成功。查看复制完成的2.txt文件内容,结果如下所示。

[root@host2 ~]# cat /tmp/2.txt

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.226.11 ansible

192.168.226.12 host1

192.168.226.13 host2

192.168.226.14 host3

通过代码的反馈结果可以看到,2.txt的文件内容与之前配置的Ansible服务器的hosts文件内容一致。除了定义文件路径及操作权限之外,读者还可以根据需要自定义其他参数,常用的参数如表1.4所示。

表1.2 copy模块常用参数

参数

默认值

可选值

备注

backup

no

yes/no

在覆盖之前将原文件备份,备份文件包含时间信息

content

-

-

当用content代替src参数的时候,可以把文档的内容设置到特定的值

dest

-

-

目标绝对路径。如果src是一个目录,dest也必须是一个目录。如果dest是不存在的路径,并且如果dest以/结尾或者src是目录,则dest被创建。如果src和dest是文件,如果dest的父目录不存在,任务将失败

follow

no

yes/no

是否遵循目的机器中的文件系统链接

force

yes

yes/no

当内容不同于源时,将替换远程文件。设置为no,则只有在目标不存在的情况下才会传输文件

group

no

-

设置文件/目录的所属组

local_follow

yes

yes/no

是否遵循本地机器中的文件系统链接

mode

-

-

设置文件权限

owner

-

-

设置文件/目录的所属用户

src

-

-

将本地路径复制到远程服务器; 可以是绝对路径或相对的。如果是一个目录,它将被递归地复制。如果路径以/结尾,则只有该目录下内容被复制到目的地,如果没有使用/来结尾,则包含目录在内的整个内容全部复制

unsafe_writes

-

yes/no

是否以不安全的方式进行,可能导致数据损坏

validate

None

-

复制前是否检验需要复制目的地的路径

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1.3 复制模块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档