自动化工具Ansible的模块之在学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化工具Ansible的模块之在学习相关的知识,希望对你有一定的参考价值。

一.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 脚本模块

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

[email protected] ~]# ansible-doc -s script
- name: 将本地脚本复制到远程主机并运行之
action: script
creates      # 一个文件名,当这个文件存在,则该命令不执行
free_form=   # 本地脚本路径
removes      # 一个文件名,这个文件不存在,则该命令不执行

ansible webserver -m script -a /root/script.sh

 

以上是关于自动化工具Ansible的模块之在学习的主要内容,如果未能解决你的问题,请参考以下文章

Ansible 学习总结(10)—— 自动化部署工具如何选?Saltstack Or Ansible

Ansible 学习总结(10)—— 自动化部署工具如何选?Saltstack Or Ansible

Ansible学习笔记

自动化运维工具 Ansible

Ansible学习:Ansible基础

自动化运维工具Ansible学习笔记