Ansible-Base-Copy-Module-1

Ansible 的 copy 模块

原文链接:https://blog.csdn.net/qq_39677803/article/details/123040746

功能:将 Ansible 管理主机上的文件拷贝到远程主机中

一、各参数解析

1.1 常用参数

1
2
3
4
5
src:    待copy的文件或目录
dest: 目标copy到远程主机的具体目录(必要参数)
owner: 目标copy到远程主机后的属主(远程主机上必须有对应的用户,否则报错)
group: 目标copy到远程主机后的属组(远程主机上必须有对应的组,否则报错)
mode: 目标copy到远程主机后的权限

1.2 其他参数

1
2
3
4
5
6
7
8
content: 若不用 src 指定拷贝的文件,必须用 content 直接指定文件内容,2 选 1。
force: 当远程主机的目标路径中已经存在同名文件,并且与 ansible 主机中的文件内容不同时,
是否强制覆盖,可选值有 yes 和 no。默认值为 yes,表示覆盖,
如果设置为 no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。
backup: 当远程主机的目标路径中已经存在同名文件,并且与 ansible 主机中的文件内容不同时,
是否对远程主机的文件进行备份,
可选值有 yes 和 no,当设置为 yes 时,会先备份远程主机中的文件,
然后再将 ansible 主机中的文件拷贝到远程主机。

二、举个栗子

2.1 拷贝单个文件到目标服务器上

1
vim single_copy.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---
# 目标主机组或名
- hosts: node
remote_user: root
# 不收集对应主机的信息
gather_facts: false
tasks:
- name: "copy aaa.txt"
copy:
src: "/root/aaa.txt"
dest: "/tmp"
owner: root
group: root
mode: 755

注:由于是 yml 格式文件,所以空格一定要对齐否则脚本会出错

2.2 拷贝多个文件到目标服务器上

1
vim more_copy.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
---
- hosts: node
gather_facts: no
become: yes
become_method: sudo
tasks:
- name: "copy files"
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
mode: 755
with_items:
- {src: "/root/aaa.txt", dest: "/tmp" }
- {src: "/root/bbb.txt", dest: "/tmp" }

2.3 拷贝目录,把目录递归 copy 过去,目标地址也得加上目录名

PS: 没有目录会新建目录

1
vim  dir_copy.yml
1
2
3
4
5
6
7
8
9
10
11
12
---
- hosts: node
remote_user: root
gather_facts: false
tasks:
- name: "copy dir"
copy:
src: "/root/test/"
dest: "/root/test"
owner: root
group: root
mode: 755

2.4 上面 3 个栗子的结果如下:

1
ansible-playbook  dir_copy.yml
1
2
3
4
5
PLAY [test] *****************************************************************************************************************************************
TASK [copy dir] *************************************************************************************************************************************
changed: [192.168.199.205]
PLAY RECAP ******************************************************************************************************************************************
192.168.199.205 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Contents
  1. 1. Ansible 的 copy 模块
    1. 1.1. 一、各参数解析
      1. 1.1.1. 1.1 常用参数
      2. 1.1.2. 1.2 其他参数
    2. 1.2. 二、举个栗子
      1. 1.2.1. 2.1 拷贝单个文件到目标服务器上
      2. 1.2.2. 2.2 拷贝多个文件到目标服务器上
      3. 1.2.3. 2.3 拷贝目录,把目录递归 copy 过去,目标地址也得加上目录名
      4. 1.2.4. 2.4 上面 3 个栗子的结果如下:
|