模块查看

可以用来查看,ansible支持的模块。

 


ansible-doc -l



 

 

 

 使用-s  可以查看,某些模块的用法

 



ansible-doc -s yum (模块名)



 

 

 

常用的模块

commond      基础指令模块 

用于远程执行命令



[root@localhost ~]# ansible  192.168.144.172 -m command -a 'date'
                                主机         参数  模块名 参数  指令
                                                     (模块的参数,用-a) 

192.168.144.172 | CHANGED | rc=0 >>
Fri Aug 16 20:08:55 CST 2019



 

也可以使用组进行操作



[root@localhost ~]# ansible  web -m command -a 'date'



ansible yum模块制定版本_shell

 

如果对所有的组进行操作,可以使会用all 



ansible all  -m command -a 'date'



 

 

command 是默认的模块,不指定的话。默认就是使用command的模块



ansible all   -a 'date'



ansible yum模块制定版本_shell_02

 

cron:  对远程主机进行计划任务。

可以使用



ansible-doc -s cron



查看参数

        state 参数: present 安装   absent  移除

 



ansible  webser  -m cron    -a     'minute="*/10"        job="/bin/echo  hello"   name="ansible test"   state="present" '
          组名字     模块名  参数      执行时间(每10分钟执行一次)  执行的内容                任务的名字(必须写)     状态
                           这个的写法和 crontab一样。如果不在这边指明,默认就是*



 

看结果,已经成功了。同时我们可以看到 有任务名生成。。所以一定要个任务名。否则他无法生成。

 

ansible yum模块制定版本_ansible yum模块制定版本_03

 

移除任务 



ansible  webser  -m cron  -a 'minute="*/10"    job="/bin/echo  hello" name="ansible test" state="absent" '
                                                                                            这边使用absent 即可



 

看结果,已经移除了

ansible yum模块制定版本_操作系统_04

 

 

group  模块

查看,其实参数不多。



[root@master ~]# ansible-doc  -s   group
- name: Add or remove groups
  group:
      gid:                   # Optional `GID' to set for the group. name: # (required) Name of the group to manage. state: # Whether the group should be present or not on the remote host. system: # If `yes', indicates that the group created is a system group.



 



ansible   webser  -m  group   -a   'name="www" gid="8080" system="yes"' 
                                     组名         gid      是不是系统用户



 

查看信息,设置的东西。都反馈了 、

 

ansible yum模块制定版本_ansible yum模块制定版本_05

 

 

 

 

Use   模块

看下说明



ansible-doc -s user



 

可以和上面的group  模块配合



ansible   webser  -m  user   -a   'name="www" uid="8080" system="yes"  group="www"' 
                                    指定用户名    uid                     指定组



查看输出



[root@master ~]# ansible   webser  -m  user   -a   'name="www" uid="8080" system="yes"  group="www"'        
192.168.249.153 | SUCCESS => {
    "changed": true, 
    "comment": "", 
    "createhome": true,     
    "group": 8080,                                        #组id         
    "home": "/home/www", 
    "name": "www", 
    "shell": "/bin/bash", 
    "state": "present",                            
    "system": true,                                       ## 系统用户
    "uid": 8080                                           ## uid

}
192.168.249.152 | SUCCESS => {
    "changed": true, 
    "comment": "", 
    "createhome": true, 
    "group": 8080, 
    "home": "/home/www", 
    "name": "www", 
    "shell": "/bin/bash", 
    "state": "present", 
    "system": true, 
    "uid": 8080
}



 

查看结果, 有了

ansible yum模块制定版本_bash_06

 

 

 

删除用户,就是加个state=absent  就行了。



ansible all -m  user -a  'name="user1"  state="absent"'



 

 

 

 

 

 

copy 模块

 复制文件用的,也可以将本地的文件复制到远程的机器上面。

查看参数



[root@master ~]# ansible-doc  -s copy



 

 



ansible all  -m copy  -a  'src=/etc/fstab  dest=/tmp/ansible.txt  owner=root mode=644 '
                            原始文件(绝对路劲)   目的文件(绝对路径)    所属用户    权限



 

验证查看,有了

ansible yum模块制定版本_操作系统_07

 

 也可以直接使用content ,指定内容。



ansible all  -m copy  -a  'content="hello  world\n hi  hi  "  dest=/tmp/test.txt  owner=root mode=644 '
                                   直接写内容,不指文件



 

查看结果,  已经有了。

ansible yum模块制定版本_ansible yum模块制定版本_08

 

file  模块

查看参数,可以对文件进行操作。可以设定文件属性。



ansible-doc -s file



执行



ansible   web  -m  file -a 'owner=www  group=www mode=644 path=/tmp/ansible.txt'
                             指定用户    指定组     权限          文件



 

 进行查看

ansible yum模块制定版本_shell_09

 

 还可以创建连接文件



ansible   web  -m  file -a 'path=/tmp/test.link  src=/tmp/ansible.txt   state=link'
                               连接文件                 源文件               状态



 

进行查看,完成

ansible yum模块制定版本_bash_10

 

 

ping 模块

这个比较简单,就是ping各主机的



ansible all -m ping



 

ansible yum模块制定版本_ansible yum模块制定版本_11

 

 

service   模块

用来管理服务的

 



ansible-doc -s service



 

 



ansible web  -m  service -a 'enabled=true  name=httpd state=started'
                               开机启动      服务名称     状态(start,stop,restart)



  

 

shell  模块

和之前的command  有区别 。在使用一些有 | 和相对复杂的指令时,需要使用shell模块。



ansible web  -m shell -a 'chkconfig --list  | grep  network'



 

 看结果。

ansible yum模块制定版本_ansible yum模块制定版本_12

 

 

 script

 将本地脚本复制到远程主机并且运行

 

 查看



ansible-doc -s script
- name: Runs a local script on a remote node after transferring i



 

随便本地写个脚本



[root@localhost ansible]# cat /tmp/test.sh 
#!/bin/bash

echo  "hello world"   >>  /tmp/anscript.txt



 

然后运行, 有些版本里面。脚本一定要在当前的相对路径(旧版本)。



ansible web  -m script  -a  "/tmp/test.sh" 
                               指定脚本



 

查看一下。有了

ansible yum模块制定版本_运维_13

 

yum模块

查看



ansible-doc -a yum



 

运行



ansible  all  -m yum -a 'name=vsftpd'
                           指定安装包名。  不加版本默认就是最新版本。



 

查看一下,就有了

ansible yum模块制定版本_ansible yum模块制定版本_14

 

卸载程序



ansible  all  -m yum -a 'name=vsftpd state=absent '



 

 

setup  模块

收集远程主机的facts(每个被管理节点在接受并运行管理命令之前,会将自己主机相关信息,如操作系统版本,IP地址等报告给远程的ansible主机。)



ansible-doc -s setup



 

 

直接运行,会出现主机的许多信息



ansible   all  -m setup