chenkehao 发表于 2018-1-2 20:40:35

ansible常用模块即用法

  Linux 中,我们可以通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,通过 ansible-doc-s模块名又可以查看该模块有哪些参数可以使用。
  下面介绍比较常用的几个模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
copy模块
file模块
cron模块
group模块
user模块
yum模块
service模块
script模块
ping模块
command模块
raw模块
get_url模块
synchronize模块  copy模块:
  指定节点上
  命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/'
  执行效果:

  

  

  

  

  

  
file模块:
  
指定节点上/tmp/t.sh的权限为755,属主和属组为root
  
    执行效果:
  

  

  
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 参数效果一样
  
页: [1]
查看完整版本: ansible常用模块即用法