自动化工具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='执行的命令'"

原文地址:https://www.cnblogs.com/chenjiaxin--007/p/7404955.html