ansible(6)--ansible的copy和fetch模块
1. copy模块
功能:从 ansible 服务端主控端复制文件到远程主机;
copy模块的主要参数如下:
| 参数 | 说明 |
|---|---|
| src | 复制的源文件路径,若源文件为目录,默认进行递归复制,如果路劲以“/”结尾,仅会复制目录下的内容,该目录本身不会复制,如果路径不带“/”,目录本身和目录下的内容会一并复制过去。 |
| dest | 目标绝对路径,如果源是文件夹,目标也必须是文件夹,不存在将创建 |
| backup | 如果目标主机已经有源文件,会事先备份,防止覆盖 |
| mode | 文件复制到远程并设定权限,默认file=644,directory=755 |
| owner | 文件复制到远程并设定属主,默认为root |
| group | 文件复制到远程并设定属组,默认为root |
| content | 将目标文件的内容,指定为content所带的字符串 |
示例一:把
/data/nginx/html/web01/index.html复制到被控主机/tmp目录下,属主属组为nginx,权限为644:[root@xuzhichao ~]# ansible NginxWebs -m copy -a "src=/data/nginx/html/web01/index.html dest=/tmp owner=nginx group=nginx mode=644"
192.168.20.22 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "b346efabe3aa64027fd74cceabfe9548989cea00",
"dest": "/tmp/index.html",
"gid": 887,
"group": "nginx",
"md5sum": "022cb99565535954e448519329778662",
"mode": "0644",
"owner": "nginx",
"size": 7,
"src": "/root/.ansible/tmp/ansible-tmp-1627787786.2-6672-67801950378810/source",
"state": "file",
"uid": 887
}
192.168.20.23 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "b346efabe3aa64027fd74cceabfe9548989cea00",
"dest": "/tmp/index.html",
"gid": 887,
"group": "nginx",
"md5sum": "022cb99565535954e448519329778662",
"mode": "0644",
"owner": "nginx",
"size": 7,
"src": "/root/.ansible/tmp/ansible-tmp-1627787786.2-6673-128530778543575/source",
"state": "file",
"uid": 887
} [root@nginx03 ~]# ll /tmp/index.html
-rw-r--r-- 1 nginx nginx 7 Aug 1 11:16 /tmp/index.html
示例二:再次复制上例文件,并对原文件备份:
[root@xuzhichao ~]# ansible NginxWebs -m copy -a "src=/data/nginx/html/web01/index.html dest=/tmp owner=nginx group=nginx mode=644 backup=yes"
192.168.20.23 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"backup_file": "/tmp/index.html.6043.2021-08-01@11:20:39~",
"changed": true,
"checksum": "f8834b5232582035f785a3dc77a6303e339d1157",
"dest": "/tmp/index.html",
"gid": 887,
"group": "nginx",
"md5sum": "747df44881df1860170c66321f38ce4c",
"mode": "0644",
"owner": "nginx",
"size": 10,
"src": "/root/.ansible/tmp/ansible-tmp-1627788037.97-6797-37444206141079/source",
"state": "file",
"uid": 887
}
192.168.20.22 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"backup_file": "/tmp/index.html.7789.2021-08-01@11:20:39~",
"changed": true,
"checksum": "f8834b5232582035f785a3dc77a6303e339d1157",
"dest": "/tmp/index.html",
"gid": 887,
"group": "nginx",
"md5sum": "747df44881df1860170c66321f38ce4c",
"mode": "0644",
"owner": "nginx",
"size": 10,
"src": "/root/.ansible/tmp/ansible-tmp-1627788037.98-6796-83776884129851/source",
"state": "file",
"uid": 887
} [root@nginx03 ~]# ll /tmp/index.html*
-rw-r--r-- 1 nginx nginx 10 Aug 1 11:20 /tmp/index.html
-rw-r--r-- 1 nginx nginx 7 Aug 1 11:16 /tmp/index.html.6043.2021-08-01@11:20:39~ <==备份的原文件
往远程的主机文件中写入内容,如果文件不存在则创建:
[root@xuzhichao ~]# ansible NginxWebs -m copy -a "content="Http_Server\n" dest=/var/www/html/index.html"
192.168.20.23 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "50d275e32df9f317f802475b11627144db2f5d3e",
"dest": "/var/www/html/index.html",
"gid": 0,
"group": "root",
"md5sum": "4ab65dcd3bf954b6e54e9ff439721ae8",
"mode": "0644",
"owner": "root",
"size": 11,
"src": "/root/.ansible/tmp/ansible-tmp-1627788165.69-6855-262538185402060/source",
"state": "file",
"uid": 0
}
192.168.20.22 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "50d275e32df9f317f802475b11627144db2f5d3e",
"dest": "/var/www/html/index.html",
"gid": 0,
"group": "root",
"md5sum": "4ab65dcd3bf954b6e54e9ff439721ae8",
"mode": "0644",
"owner": "root",
"size": 11,
"src": "/root/.ansible/tmp/ansible-tmp-1627788165.71-6854-248696166101546/source",
"state": "file",
"uid": 0
} [root@nginx03 ~]# cat /var/www/html/index.html
Http_Server
示例四:复制目录到目标主机:
[root@xuzhichao ~]# ansible NginxWebs -m copy -a "src=/root/test dest=/root"
192.168.20.23 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "feba0582dfea7fc4fd236536b6a1173b19228388",
"dest": "/root/test/nginx.conf",
"gid": 0,
"group": "root",
"md5sum": "482efd688106eebebda54c12e52ddd01",
"mode": "0644",
"owner": "root",
"size": 3258,
"src": "/root/.ansible/tmp/ansible-tmp-1627788373.43-6930-280408452171512/source",
"state": "file",
"uid": 0
}
192.168.20.22 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "feba0582dfea7fc4fd236536b6a1173b19228388",
"dest": "/root/test/nginx.conf",
"gid": 0,
"group": "root",
"md5sum": "482efd688106eebebda54c12e52ddd01",
"mode": "0644",
"owner": "root",
"size": 3258,
"src": "/root/.ansible/tmp/ansible-tmp-1627788373.42-6929-226478301245663/source",
"state": "file",
"uid": 0
} [root@nginx03 ~]# ll /root/test/
total 4
-rw-r--r-- 1 root root 3258 Aug 1 11:26 nginx.conf
2. fetch模块
作用:从客户端取文件(只能是文件,不支持目录)至服务器端的目录里,与copy相反,如果一定要拉取目录,可以先将目录tar,再拉取。
主要参数如下:
| 参数 | 说明 |
|---|---|
| src | 复制的源文件路径,源文件只能是文件 |
| dest | 目标绝对路径 |
示例一:把被控主机的
/etc/nginx/nginx/conf配置文件拷贝到本机的/root/nginx目录下:[root@xuzhichao ~]# ansible NginxWebs -m fetch -a 'src=/etc/nginx/nginx.conf dest=/root/nginx'
192.168.20.22 | CHANGED => {
"changed": true,
"checksum": "feba0582dfea7fc4fd236536b6a1173b19228388",
"dest": "/root/nginx/192.168.20.22/etc/nginx/nginx.conf",
"md5sum": "482efd688106eebebda54c12e52ddd01",
"remote_checksum": "feba0582dfea7fc4fd236536b6a1173b19228388",
"remote_md5sum": null
}
192.168.20.23 | CHANGED => {
"changed": true,
"checksum": "b9671ff7a350dbf83543ec585e776500d45dccf0",
"dest": "/root/nginx/192.168.20.23/etc/nginx/nginx.conf",
"md5sum": "ee4c9a5f234057114b6454055df5f3a5",
"remote_checksum": "b9671ff7a350dbf83543ec585e776500d45dccf0",
"remote_md5sum": null
} #注意:把远程主机文件拷贝到本机时,会为每个远程主机建立一个文件夹,名称就是该远程主机的ip地址,然后把文件分别放到对应主机的目录下;
[root@xuzhichao ~]# tree /root/nginx
/root/nginx
├── 192.168.20.22
│ └── etc
│ └── nginx
│ └── nginx.conf
└── 192.168.20.23
└── etc
└── nginx
└── nginx.conf 6 directories, 2 files
示例二:拷贝远程主机的目录到本机
#1.首先需要把远程主机的目录打包,默认打包到远程主机的家目录下(/root)
[root@xuzhichao ~]# ansible NginxWebs -m shell -a 'tar jcf log.tar.bzip2 /var/log/nginx/access*'
[WARNING]: Consider using the unarchive module rather than running 'tar'. If you need to use command because unarchive is insufficient you can add 'warn:
false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
192.168.20.23 | CHANGED | rc=0 >>
tar: Removing leading `/' from member names
192.168.20.22 | CHANGED | rc=0 >>
tar: Removing leading `/' from member names #2.把打包文件取回本机:
[root@xuzhichao ~]# ansible NginxWebs -m fetch -a 'src=/root/log.tar.bzip2 dest=/root/nginx'
192.168.20.23 | CHANGED => {
"changed": true,
"checksum": "832b6b9863baf60970f0972c749df8a26221ab26",
"dest": "/root/nginx/192.168.20.23/root/log.tar.bzip2",
"md5sum": "86c762c3ab6f3253c6b6be1739a95ac8",
"remote_checksum": "832b6b9863baf60970f0972c749df8a26221ab26",
"remote_md5sum": null
}
192.168.20.22 | CHANGED => {
"changed": true,
"checksum": "c66537be74f74e1c03254be3400ce7af4a1fe4bb",
"dest": "/root/nginx/192.168.20.22/root/log.tar.bzip2",
"md5sum": "74671b6a38285ae2d576451b3b248f3e",
"remote_checksum": "c66537be74f74e1c03254be3400ce7af4a1fe4bb",
"remote_md5sum": null
} [root@xuzhichao ~]# tree /root/nginx
/root/nginx
├── 192.168.20.22
│ ├── etc
│ │ └── nginx
│ │ └── nginx.conf
│ └── root
│ └── log.tar.bzip2
└── 192.168.20.23
├── etc
│ └── nginx
│ └── nginx.conf
└── root
└── log.tar.bzip2 8 directories, 4 files
ansible(6)--ansible的copy和fetch模块的更多相关文章
- 利用Ansible模块copy和fetch进行主机间文件的传递
场景: java应用程序和Ansible不在同一台机子,要读取的文件又在另一台主机. 主机a不能保存文件,可以临时保存. 文件都在主机b上保存. 需求: 需要将文件从主机c传到主机b,再从主机b传到主 ...
- ansible模块之command、shell、script、file、copy、fetch
前戏 ansible 批量在远程主机上执行命令 openpyxl 操作excel表格 puppet ansible slatstack ansible epel源 第一步: 下载epel源 wget ...
- Ansible系列(二):选项和常用模块
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- ansible笔记(4):常用模块之文件操作
前文中,我们已经介绍了怎样使用模块,而且我们知道,ansible有很多模块,每个模块都有自己的功能,"模块"涉及到的方向比较多,所以对于个人来说,并没有必要了解所有的模块,我们只需 ...
- Ansible自动化搭建及工具集和常见模块、命令详情(重点)
一.ansible介绍 1.ansible简介 官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具. Ansible跟其他IT自动化技术的区别 ...
- Ansible自动化运维工具及其常用模块
Ansible自动化运维工具及其常用模块 目录 Ansible自动化运维工具及其常用模块 一.Ansible简介 1. Ansible概述 2. Ansible作用 3. Ansible的工作模块 4 ...
- ansible基础-ansible角色的使用
ansible基础-ansible角色的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们建议把多个节点都会用到的功能将其定义模块,然后谁要用到该模块就直接调用即可!而在a ...
- 什么是 Ansible - 使用 Ansible 进行配置管理
[注]本文译自:https://www.edureka.co/blog/what-is-ansible/ Ansible 是一个开源的 IT 配置管理.部署和编排工具.它旨在为各种自动化挑战提供巨 ...
- ansible配置文件 ansible.cfg的一点说明
ansible配置文件 ansible.cfg的一点说明 > ansible --version ansible 2.1.1.0 config file = /etc/ansible/ansib ...
- copy模块与fetch模块
copy:将本地机器上的文件拷贝到远程机器 fetch:将远程机器上的文件拷贝到本地机器 [root@localhost zabbix]# ansible-doc -s copy - name: Co ...
随机推荐
- 官宣!禅道与极狐(GitLab)达成深度合作,携手推进开源开放DevOps生态发展
近日,禅道与著名编程开源开发平台极狐(GitLab)公司签署战略合作,双方将重点探索适用于中国用户DevOps全生命周期解决方案,并将在开源培训和教育.云服务解决方案等多个领域深度合作,共同助力国内D ...
- Debug模式调试技巧
Debug模式调试技巧 断点管理窗口 菜单栏方式 Run -> view breakpoints Actions方式 双击shift调出Actions窗口,输入view breakpoint ...
- CTFshow pwn53 wp
PWN53 那么先看保护 虽然没有开canary但是本题在ida打开看见他是模拟了canary的效果,不同的是他的是固定的canary,但是一样要爆破 而且发现还有后门函数 在ctfshow函数我们发 ...
- Python 学习路线:介绍、基础语法、数据结构、算法、高级主题、框架及异步编程详解
Python 介绍 Python 是一种 高级 的.解释型 的.通用 的编程语言.其设计哲学强调代码的可读性,使用显著的缩进.Python 是 动态类型 和 垃圾收集 的. 基本语法 设置 Pytho ...
- C++ 虚函数详解:多态性实现原理及其在面向对象编程中的应用
在面向对象的编程中,多态性是一个非常重要的概念.多态性意味着在不同的上下文中使用同一对象时,可以产生不同的行为.C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键 什么是虚函数 虚函 ...
- 抓包整理————tcp 三次握手[九]
前言 简单抓包一下3次握手. 正文 握手的目标: 同步sequence 序列化 初始化序列化ISN(Initial Sequence Number) 交换tcp 通信参数 如MSS.窗口比例因子.选择 ...
- nginx重新整理——————编译nginx[二]
前言 简单编译一下nginx. 正文 为什么我们要去编译nginx. 系统安装,比如yum安装,会把nginx 模块直接编译进来. 这意味着,我们无法使用第三方的包.如果我们需要使用第三方包,那么需要 ...
- redis 简单整理——内存的管理[二十六]
前言 redis 是一个内存型数据库,那么就需要重点关注一下内存了. 正文 理解Redis内存,首先需要掌握Redis内存消耗在哪些方面.有些内存消 耗是必不可少的,而有些可以通过参数调整和合理使用来 ...
- c# ref和out 详解
前言 数据在内存中,存在两种状态,堆和栈中.堆中的数据是可以直接拿到的,一般称引用对象. 这些对象有一个特征,那就是经过函数处理之后,这些数据在主线程中改变了.好奇点好了,为什么栈中的数据就不会改变呢 ...
- CPVT:美团提出动态位置编码,让ViT的输入更灵活 | ICLR 2023
论文提出了一种新的ViT位置编码CPE,基于每个token的局部邻域信息动态地生成对应位置编码.CPE由卷积实现,使得模型融合CNN和Transfomer的优点,不仅可以处理较长的输入序列,也可以在视 ...