zoukankan      html  css  js  c++  java
  • Files modules(copy file fetch)

    copy – Copy files to remote locations

    把主控节点本地的文件上传同步到远程受控节点上, 该模块不支持从远程受控节点拉取文件到主控节点上。 参数选项如下:
    src:指定源文件路径,可以是相对路径,也可以是绝对路径,可以是目录(并非是必须的,可以使用content,直接生成文件内容). src即是要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用”/”来结尾,则只复制目录里的内容,如果没有使用”/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。
    dest:指定目标文件路径,只能是绝对路径,如果src是目录,此项必须是目录. 这个是必选项!
    owner:指定属主;
    group:指定属组;
    mode:指定权限,可以以数字指定比如0644;
    content:代替src,直接往dest文件中写内容,可以引用变量,也可以直接使用inventory中的主机变量. 写后会覆盖原文件内容!
    backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no
    force: 如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes ;
    directory_mode:递归的设定目录的权限,默认为系统默认权限;
    others:所有的file模块里的选项都可以在这里使用;

    特别注意:  src和content不能同时使用!!!! 

    root@ansible-server:~$ ansible 192.168.1.38 -m copy -a "src=/home/gota/test.sh dest=/work/file"
    192.168.1.38 | CHANGED => {  ###对哪台主机进行操作
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true,  ###是否对主机信息进行改变
        "checksum": "dcaa896be5c669bbfcc657cc25452d46962aedb6", #???
        "dest": "/work/file/test.sh",  #显示目标路径信息
        "gid": 0,         #复制后的文件gid信息
        "group": "root",  #显示复制后文件属组信息
        "md5sum": "bf53066b75afbc91cd8917d43e10880d", #test.sh文件的md5值
        "mode": "0644",  #显示复制后文件的权限信息
        "owner": "root", #显示复制后文件的属主信息
        "size": 637,     #显示复制后文件的大小信息
        "src": "/root/.ansible/tmp/ansible-tmp-1564988630.38-248746591491638/source", 
        "state": "file",  #显示当前操作的是一个文件
        "uid": 0          #显示复制后文件uid信息
    }

    1、在传输文件时修改文件的属主和属组信息 

    [root@ansble-server ansible]# ansible 10.192.27.115 -m copy -a "src=/home/ansible/lnmp_deploy.sh dest=/data/ owner=mysql group=mysql"
    10.192.27.115 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "checksum": "462cc62be4f5eabb2c4b887e922608a1cd82474a", 
        "dest": "/data/lnmp_deploy.sh", 
        "gid": 1000, 
        "group": "mysql", 
        "mode": "0644", 
        "owner": "mysql", 
        "path": "/data/lnmp_deploy.sh", 
        "size": 16818, 
        "state": "file", 
        "uid": 1000
    }
    ansible 10.192.27.115 -m copy -a "src=/home/ansible/lnmp_deploy.sh dest=/data/ owner=mysql group=mysql"

    2、在传输文件时修改文件的权限信息(以后没事看看Linux特殊文件权限有三个玩意:sticky bit、SGID、SUID)

    [root@ansible-server ansible]# ansible 10.192.27.115 -m copy -a "src=/home/ansible/lnmp_deploy.sh dest=/data/ mode=1777"
    10.192.27.115 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "checksum": "462cc62be4f5eabb2c4b887e922608a1cd82474a", 
        "dest": "/data/lnmp_deploy.sh", 
        "gid": 0, 
        "group": "root", 
        "mode": "01777", 
        "owner": "root", 
        "path": "/data/lnmp_deploy.sh", 
        "size": 16818, 
        "state": "file", 
        "uid": 0
    }
    ansible 10.192.27.115 -m copy -a "src=/home/ansible/lnmp_deploy.sh dest=/data/ mode=1777"

     3、在传输数据文件信息时,远程主机中已经存在的源文件 :如果backup=yes,就是生成一个源文件的备份文件,否则则直接覆盖

    [root@ansible-server ansible]# ansible 10.192.27.115 -m copy -a "src=/home/ansible/lnmp_deploy.sh dest=/data/ backup=yes"
    10.192.27.115 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "backup_file": "/data/lnmp_deploy.sh.21708.2020-04-01@14:16:56~", 
        "changed": true, 
        "checksum": "3e45de4e26e36e966c28f59ccb6787dab1a34e0a", 
        "dest": "/data/lnmp_deploy.sh", 
        "gid": 0, 
        "group": "root", 
        "md5sum": "c5eaae0c74503a4c33373945d191edb5", 
        "mode": "01777", 
        "owner": "root", 
        "size": 16822, 
        "src": "/root/.ansible/tmp/ansible-tmp-1585721824.6-19759395643049/source", 
        "state": "file", 
        "uid": 0
    }
    ansible 10.192.27.115 -m copy -a "src=/home/ansible/lnmp_deploy.sh dest=/data/ backup=yes"

     4、创建一个文件并直接编辑文件的内容 或覆盖一个已有文件的内容

    [root@ansible-server ansible]# ansible 10.192.27.115 -m copy -a "content='oldboy' dest=/data/lnmp_deploy.sh"
    10.192.27.115 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "checksum": "da3a7ab3551120059810d0c7156a8150a0bc245a", 
        "dest": "/data/lnmp_deploy.sh", 
        "gid": 0, 
        "group": "root", 
        "md5sum": "890b185727556f1be31d7fe5ee5ce4dc", 
        "mode": "01777", 
        "owner": "root", 
        "size": 6, 
        "src": "/root/.ansible/tmp/ansible-tmp-1585724141.05-258435538166891/source", 
        "state": "file", 
        "uid": 0
    }
    [root@ansible-server ansible]# ansible 10.192.27.115 -m copy -a "content='oldboy' dest=/data/haha.sh"
    10.192.27.115 | CHANGED => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "checksum": "da3a7ab3551120059810d0c7156a8150a0bc245a", 
        "dest": "/data/haha.sh", 
        "gid": 0, 
        "group": "root", 
        "md5sum": "890b185727556f1be31d7fe5ee5ce4dc", 
        "mode": "0644", 
        "owner": "root", 
        "size": 6, 
        "src": "/root/.ansible/tmp/ansible-tmp-1585724331.23-86897353811244/source", 
        "state": "file", 
        "uid": 0
    }
    ansible 10.192.27.115 -m copy -a "content='oldboy' dest=/data/lnmp_deploy.sh"

    file – Manage files and file properties

    file模块主要用于远程主机上的文件操作,file模块包含如下选项:
    force: 需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项: yes|no
    group: 定义文件/目录的属组
    mode: 定义文件/目录的权限
    owner: 定义文件/目录的属主
    path: 必选项,定义文件/目录的路径
    recurse: 递归的设置文件的属性,只对目录有效
    src: 要被链接的源文件的路径,只应用于state=link的情况
    dest: 被链接到的路径,只应用于state=link的情况
    state: 表示file的状态, 主要分为:
    directory: 如果目录不存在,创建目录;
    file: 即使文件不存在,也不会被创建;
    link: 创建软链接;
    hard: 创建硬链接;
    touch: 如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间;
    absent: 删除目录、文件或者取消链接文件;

    file模块创建空文件不行,适合设置文件属性 。空文件可以用copy

    空文件创建报错
    gota@gota-linux61:~$ ansible 192.168.1.20 -m file -a "dest=/work/file/haha.txt owner=gota group=gota mode=666" 192.168.1.20 | FAILED! => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "msg": "file (/work/file/haha.txt) is absent, cannot continue", "path": "/work/file/haha.txt" } gota@gota-linux61:~$ ansible 192.168.1.38 -m file -a "dest=/work/file/haha.txt owner=gota group=gota mode=666" 192.168.1.38 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": true, "gid": 1000, "group": "gota", "mode": "0666", "owner": "gota", "path": "/work/file/haha.txt", "size": 5, "state": "file", "uid": 1000 }

     

    fetch – Fetch files from remote nodes

    gota@gota-linux61:~$ ansible 192.168.1.38 -m fetch -a "src=/work/ansible/test.sh dest=/tmp"
    192.168.1.38 | CHANGED => {
        "changed": true, 
        "checksum": "dcaa896be5c669bbfcc657cc25452d46962aedb6", 
        "dest": "/tmp/192.168.1.38/work/ansible/test.sh", 
        "md5sum": "bf53066b75afbc91cd8917d43e10880d", 
        "remote_checksum": "dcaa896be5c669bbfcc657cc25452d46962aedb6", 
        "remote_md5sum": null
    }
    gota@gota-linux61:~$ ls /tmp/192.168.1.38/work/ansible/test.sh 
    /tmp/192.168.1.38/work/ansible/test.sh

    数据移动模块:copy模块、fetch模块、synchronize模块数据移动原理图

  • 相关阅读:
    java后端工具积累
    Java基础面试题整理
    MySql常问面试题
    jvm及并发面试题
    中间件redis kafka面试题
    笔记
    解决Git操作报错
    view的state和drawable的state 源码分析
    flutter_6_动态化简介
    有关namespace 命名空间
  • 原文地址:https://www.cnblogs.com/linux985/p/11303010.html
Copyright © 2011-2022 走看看