以前在公司推广使用了ansible,这也使用一段时间了,分享下有关ansible模块的使用相关介绍html
ansible 默认提供了不少模块来供咱们使用。在 Linux 中,咱们能够经过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,经过 ansible-doc -s 模块名 又能够查看该模块有哪些参数可使用。linux
下面介绍比较经常使用的几个模块:git
copy模块 file模块 cron模块 group模块 user模块 yum模块 service模块 script模块 ping模块 command模块 raw模块 get_url模块 synchronize模块
copy模块:bash
目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上服务器
命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/'运维
执行效果:ssh
file模块:ide
目的:更改指定节点上/tmp/t.sh的权限为755,属主和属组为rooturl
命令:ansible all -m file -a "dest=/tmp/t.sh mode=755 owner=root group=root"spa
执行效果:
cron模块:
目的:在指定节点上定义一个计划任务,每隔3分钟到主控端更新一次时间
命令:ansible all -m cron -a 'name="custom job" minute=*/3 hour=* day=* month=* weekday=* job="/usr/sbin/ntpdate 172.16.254.139"'
执行效果:
group模块:
目的:在全部节点上建立一个组名为nolinux,gid为2014的组
命令:ansible all -m group -a 'gid=2014 name=nolinux'
执行效果:
user模块:
目的:在指定节点上建立一个用户名为nolinux,组为nolinux的用户
命令:ansible 10.1.1.113 -m user -a 'name=nolinux groups=nolinux state=present'
执行命令:
补充:删除用户示例
yum模块:
目的:在指定节点上安装 lrzsz 服务
命令:ansible all -m yum -a "state=present name=httpd"
执行效果:
service模块:
目的:启动指定节点上的 puppet 服务,并让其开机自启动
命令:ansible 10.1.1.113 -m service -a 'name=puppet state=restarted enabled=yes'
执行效果:
script模块:
目的:在指定节点上执行/root/a.sh脚本(该脚本是在ansible控制节点上的)
命令:ansible 10.1.1.113 -m script -a '/root/a.sh'
执行效果:
ping模块:
目的:检查指定节点机器是否还能连通
命令:ansible 10.1.1.113 -m ping
执行效果:
command模块:
目的:在指定节点上运行hostname命令
命令:ansible 10.1.1.113 -m command -a 'hostname'
执行效果:
raw模块:
目的:在10.1.1.113节点上运行hostname命令
命令:ansible 10.1.1.113 -m raw-a 'hostname|tee'
执行效果:
get_url模块:
目的:将http://10.1.1.116/favicon.ico文件下载到指定节点的/tmp目录下
命令:ansible 10.1.1.113 -m get_url -a 'url=http://10.1.1.116/favicon.ico dest=/tmp'
执行效果:
synchronize模块:
目的:将主控方/root/a目录推送到指定节点的/tmp目录下
命令:ansible 10.1.1.113 -m synchronize -a 'src=/root/a 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/'
执行效果:
因为模块默认启用了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 参数效果同样
OK!
以上暂且列举这些平常运维中常常会用到的一些模块,更多的模块信息后期会继续完善,你们也能够去官网查看更多的信息。