|
一.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='执行的命令'" |
|
|