• 自动化工具Ansible的模块之在学习(1)


    一.synchronize 模块:

      有的时候需要你去同步一个目录到本地或者远程,copy当然也可以,但会非常的慢,远远没有synchronize模块给力,它依赖于rsync去同步,下面简单介绍一下:

    使用synchronize同步文件,其参数如下:

    archive: 归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启
    checksum: 跳过检测sum值,默认关闭
    compress:是否开启压缩
    copy_links:复制链接文件,默认为no ,注意后面还有一个links参数
    delete: 删除不存在的文件,默认no
    dest:目录路径
    dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议
    dirs:传速目录不进行递归,默认为no,即进行目录递归
    rsync_opts:rsync参数部分
    set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况
    mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件
    
    src=some/relative/path dest=/some/absolute/path rsync_path="sudo rsync"
    src=some/relative/path dest=/some/absolute/path archive=no links=yes
    src=some/relative/path dest=/some/absolute/path checksum=yes times=no
    src=/tmp/helloworld dest=/var/www/helloword rsync_opts=--no-motd,--exclude=.git mode=pull
    
    目的:将主控方/root目录推送到指定节点的/tmp目录下
    命令:ansible 10.1.1.113 -m synchronize -a 'src=/root dest=/tmp/ compress=yes'
    执行效果:
    
    delete=yes   使两边的内容一样(即以推送方为主)
    compress=yes  开启压缩,默认为开启
    --exclude=.Git  忽略同步.git结尾的文件
    
    注意:由于模块,默认都是推送push。因此,如果你在使用拉取pull功能的时候,可以参考如下来实现
    mode=pull 更改推送模式为拉取模式
    目的:将10.1.1.113节点的/tmp/a目录拉取到主控节点的/root目录下
    命令:ansible 10.1.1.113 -m synchronize -a 'mode=pull src=/tmp/a dest=/root/ mode=pull'
    
    由于模块默认启用了archive参数,该参数默认开启了recursive, links, perms, times, owner,group和-D参数。如果你将该参数设置为no,那么你将停止很多参数,比如会导致如下目的递归失败,导致无法拉取。
    
    其他相关的参数解释:
    
    dest_port=22    # 指定目的主机的ssh端口,ansible配置文件中的 ansible_ssh_port 变量优先级高于该 dest_port 变量
    rsync_path      # 指定 rsync 命令来在远程服务器上运行。这个参考rsync命令的--rsync-path参数,
    --rsync-path=PATH     # 指定远程服务器上的rsync命令所在路径信息
    rsync_timeout   # 指定 rsync 操作的 IP 超时时间,和rsync命令的 --timeout 参数效果一样

    二.Script 脚本模块

      有的时候需要去执行远程的一个脚本,找到相应的模块就可以啦!!

    root@node1 ~]# ansible-doc -s script
    - name: 将本地脚本复制到远程主机并运行之
    action: script
    creates      # 一个文件名,当这个文件存在,则该命令不执行
    free_form=   # 本地脚本路径
    removes      # 一个文件名,这个文件不存在,则该命令不执行
    
    ansible webserver -m script -a '/root/script.sh'

     三.Unarchive模块

    用于解压文件,模块包含如下选项:
        copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,则要求目标主机上压缩包必须存在。
        creates:指定一个文件名,当该文件存在时,则解压指令不执行
        dest:远程主机上的一个路径,即文件解压的路径 
        grop:解压后的目录或文件的属组
        list_files:如果为yes,则会列出压缩包里的文件,默认为no,2.0版本新增的选项
        mode:解决后文件的权限
        src:如果copy为yes,则需要指定压缩文件的源路径 
        owner:解压后文件或目录的属主
     示例如下:
        - unarchive: src=foo.tgz dest=/var/lib/foo
       - unarchive: src=/tmp/foo.zip dest=/usr/local/bin copy=no
       - unarchive: src=https://example.com/example.zip dest=/usr/local/bin copy=no

     四.Cron模块

      ansible host -s -m cron -a "name='注释的内容'  minute=10 hours=3(时间点) job='执行的命令'"

  • 相关阅读:
    2018年度总结
    SQL特殊comment语法
    mysql 主从复制change master to
    mysql 主从复制参数slave_net_timeout
    show master status, show slave status中的Executed_Gtid_Set
    mysql重复start slave、stop slave测试
    golang database sql DSN (Data Source Name)中的timeout, readTimeout
    mysql show master status为空值
    Linux 建立 TCP 连接的超时时间分析(解惑)
    golang 原子操作函数
  • 原文地址:https://www.cnblogs.com/chenjiaxin--007/p/7404955.html
Copyright © 2020-2023  润新知