一丶Ansible Modules

  ansible的命令格式

  ansible  目标主机  [-f N]  [-m module_name]  [-a args]

  •  -f N:每次向N个主机发送指令
  •  -m 模块名:指定使用的模块名称,默认是command
  •  -a 参数: 指明模块专用参数;args一般为key=value格式

1.command模块

作用


•  默认模块,可以省略


•  用于在远程主机执行命令,


•  缺点就是在远程主机执行命令的时候,不能使用变量和参数


格式

        • ansible  host_list  [-m  command]  -a  命令

[root@localhost ~]# ansible webserver -m command -a "date"
 192.168.253.177 | CHANGED | rc=0 >>
 2020年 06月 27日 星期六 20:26:24 CST
 192.168.253.178 | CHANGED | rc=0 >>
 2020年 06月 27日 星期六 20:26:25 CST

2、shell模块

作用:

       •  和command类似,区别是这个模块有变量

区别:

       • command只能执行简单命令

       • shell模块可以执行带参数和变量的命令

格式:

         -m shell -a “命令”

[root@localhost ~]# ansible all -m shell -a "echo 123 | passwd --stdin hhh"
 192.168.253.178 | CHANGED | rc=0 >>
 更改用户 hhh 的密码 。
 passwd:所有的身份验证令牌已经成功更新。
 192.168.253.177 | CHANGED | rc=0 >>
 更改用户 hhh 的密码 。
 passwd:所有的身份验证令牌已经成功更新。

3.user模块

作用


• 用来实现用户管理的


选项


•  groups :指定用户的属组


•  password :指定用户的密码


•  name :指定用户名


•  createhome :是否创建家目录 yes|no


•  system :是否为系统用户


•  remove :当 state=absent 时, remove=yes 则表示连同家目录一起删除


•  state :是创建还是删除


 


[root@localhost ~]# ansible all -m user -a "name=tom password=123"    #在所有被管理节点创建tom用户,并设置密码为123
[root@localhost ~]# ansible all -m user -a 'name="tom" state="absent"'  #在所有被管理节点删除tom用户

4.copy模块

作用


•  实现文件复制的模块


选项


•  src 本地对象文件或者文件夹,可以是绝对路径,也可以是相对路径。


•  dest 被复制到远程主机的本地对象文件或者文件夹


•  mode 设置复制后文件的权限 ,比如 644


•  backup 设置是否先将源文件备份 . 设定值: yes/no 缺省为 yes


•  force 是否强制覆盖 . 设定值: yes/no 缺省为 no


•  owner 指定复制后的文件的属主


•  content 可替换 src ,也就是直接用这个内容生成文件内容


 


ansible all -m copy -a "src=a.txt dest=/ mode=700"  #将a.txt分别复制到被管理节点的/下,将权限改为700

5.file模块

作用:


•  file 模块它包含了文件、文件夹、超级链接类的创立、拷贝、移动、删除操作。


选项


• 


•  force  强制执行


•  mode 等同于 chmod


•  path 目标路径,也可以用 dest,name 代替


•  src    待拷贝文件 / 文件夹的原始位置。


•  state  代表拷贝后是文件类型; link 代表最终是个软链接; directory 代表文件夹; hard 代表硬链接; touch 代表生成一个空文件; absent 代表删除


 


[root@localhost ~]# ansible all -m file -a "name=/tmp/abc.txt state=touch"   #在每个被管理主机的tmp下创建空文件abc.txt
[root@localhost ~]# ansible all -m file -a "src=/tmp/abc.txt path=/tmp/soft.txt state=link"  #在每个被管理主机的tmp下创建空文件abc.txt,创建软链接soft.txt

6.ping模块

作用:


•   这是个测试模块,测试主机是否都正常连接


 


[root@localhost ~]# ansible webserver -m ping    #检测被管理主机是否在线

7.reboot模块

作用:

       

[root@localhost ~]# ansible all -m reboot   #重启所有被管理节点

8.yum模块

作用


•  安装程序包的模块


选项


•  name= 要安装的软件


•  state=  present , latest 表示安装, absent 表示卸载


 


[root@localhost ~]# ansible all -m yum -a "name=zsh state=present"   #在所有被管理节点安装zsh

9.service模块

作用:


•  这模块很重要,是用来管理服务的


选项


•  enabled 表示是否设置开机自动启动


•  state  有多个子选项 stared/ stoped /restarted/reloaded , service 最终操作后的状态。


•  enabled 和 state 至少要有一个被定义


•  name 表示要控制的服务的名称


•  runlevel 设置在哪些级别下自动启动


 


[root@localhost ~]# ansible all -m service -a "name=httpd state=started enabled=on"  #启动所有被管理主机上的httpd服务,并设置为开机自动启动

10.systemd模块

作用:

       • centos7管理服的方法和service类似

选项

• state:设置服务状态

stared/stoped/restarted/reloaded

       • enable设置服务开机自动启动

       •  runlevel设置服务的运行级别

11.script模块

作用: 将一个脚本文件发送到远程主机,并自动执行

[root@localhost ~]# vim jb.sh
#!/bin/bash
 yum install httpd -y
[root@localhost ~]# ansible all -m script -a "/root/jb.sh"

12.unarchive模块

作用:将压缩包解压到指定的位置下

选项

      src:指定本地的压缩吧

     dest:指定将压缩包解压到目标主机的哪个路径

[root@localhost ~]# ansible all -m unarchive -a "src=/root/nginx-1.16.1.tar.gz dest=/home/"   #将nginx的源码包解压到被管理节点的home下

13.cron模块

作用:


•  在指定时间运行指定的命令


选项:


•  state :有两个选项, present 表示要安装某个任务; absent 表示移除某个任务


[root@localhost ~]# ansible all -m cron -a "name=mycron state=present job='echo 123>>/a.txt' minute=*/2"   #每隔2分钟在/a.txt中写入一行数据