设为首页 收藏本站
查看: 1177|回复: 0

[经验分享] 自动化工具Ansible的模块之在学习(1)

[复制链接]

尚未签到

发表于 2018-1-3 09:51:23 | 显示全部楼层 |阅读模式
  一.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='执行的命令'"

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-431073-1-1.html 上篇帖子: ansible 开源批量管理服务器工具 下篇帖子: CentOS6.5 64位下安装部署Ansible
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表