1、command
Command:在远程主机执行命令,默认模块,可忽略-m选项    > ansible srvs -m command -a 'service vsftpd start'    > ansible srvs -m command -a 'echo adong |passwd --stdin 123456'此命令不支持 $VARNAME < > | ; & 等,用shell模块实现    chdir:   进入到被管理主机目录    creates: 如果有一个目录是存在的,步骤将不会运行Command命令    ansible websrvs -a 'chdir=/data/ ls'
2、shell
Shell:和command相似,用shell执行命令    > ansible all -m shell  -a 'getenforce'  查看SELINUX状态    >  ansible all -m shell  -a "sed -i 's/SELINUX=.*/SELINUX=disabled' /etc/selinux/config"    > ansible srv -m shell -a 'echo magedu |passwd –stdin wang'    调用bash执行命令 类似 cat /tmp/stanley.md | awk -F'|' '{print $1,$2}' &> /tmp/example.txt         这些复杂命令,即使使用shell也可能会失败,    解决办法:写到脚本时,copy到远程执行,再把需要的结果拉回执行命令的机器    修改配置文件,使shell作为默认模块            vim /etc/ansible/ansible.cfg        module_name = shell
3、script
Script:在远程主机上运行ansible服务器上的脚本    > -a "/PATH/TO/SCRIPT_FILE"    > ansible websrvs -m script -a /data/test.sh
4、copy
Copy:从主控端复制文件到远程主机      src : 源文件  指定拷贝文件的本地路径  (如果有/ 则拷贝目录内容,比拷贝目录本身)      dest: 指定目标路径      mode: 设置权限      backup: 备份源文件      content: 代替src  指定本机文件内容,生成目标主机文件      > ansible websrvs -m copy -a "src=/root/test1.sh dest=/tmp/test2.showner=wang mode=600 backup=yes"        如果目标存在,默认覆盖,此处指定先备份      > ansible websrvs -m copy -a "content='test content\nxxx' dest=/tmp/test.txt"        指定内容,直接生成目标文件
5、fetch
Fetch:从远程主机提取文件至主控端,copy相反,目前不支持目录,可以先打包,再提取文件     > ansible websrvs -m fetch -a 'src=/root/test.sh dest=/data/scripts'     会生成每个被管理主机不同编号的目录,不会发生文件名冲突     > ansible all -m shell -a 'tar jxvf test.tar.gz /root/test.sh'     > ansible all -m fetch -a 'src=/root/test.tar.gz dest=/data/'
6、file
File:设置文件属性    path: 要管理的文件路径 (强制添加)    recurse: 递归,文件夹要用递归    src:  创建硬链接,软链接时,指定源目标,配合'state=link' 'state=hard' 设置软链接,硬链接    state: 状态          absent 缺席,删除    > ansible websrvs -m file -a 'path=/app/test.txt state=touch'       创建文件    > ansible websrvs -m file -a "path=/data/testdir state=directory"   创建目录        > ansible websrvs -m file -a "path=/root/test.sh owner=wang mode=755"  设置权限755    > ansible websrvs -m file -a 'src=/data/testfile dest=/data/testfile-link state=link' 创建软链接
7、unarchive
unarchive:解包解压缩,有两种用法:    1、将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes.    2、将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no    常见参数:        copy:默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,              如果设置为copy=no,会在远程主机上寻找src源文件        src: 源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,              如果是远程主机上的路径,则需要设置copy=no        dest:远程主机上的目标路径        mode:设置解压缩后的文件权限    示例:        ansible websrvs -m unarchive -a 'src=foo.tgz dest=/var/lib/foo'            #默认copy为yes ,将本机目录文件解压到目标主机对应目录下        ansible websrvs -m unarchive -a 'src=/tmp/foo.zip dest=/data copy=no mode=0777'          # 解压被管理主机的foo.zip到data目录下, 并设置权限777        ansible websrvs -m unarchive -a 'src=https://example.com/example.zip dest=/data copy=no'
8、archive
Archive:打包压缩    > ansible all -m archive -a 'path=/etc/sysconfig dest=/data/sysconfig.tar.bz2 format=bz2 owner=wang mode=0777'    将远程主机目录打包         path:   指定路径        dest:   指定目标文件        format: 指定打包格式        owner:  指定所属者        mode:   设置权限
9、hostname
Hostname:管理主机名    ansible appsrvs -m hostname -a "name=app.adong.com"  更改一组的主机名    ansible 192.168.38.103 -m hostname -a "name=app2.adong.com" 更改单个主机名
10、cron
Cron:计划任务    支持时间:minute,hour,day,month,weekday    > ansible websrvs -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.16.0.1 &>/dev/null' name=Synctime"     创建任务    > ansible websrvs -m cron -a 'state=absent name=Synctime'     删除任务    > ansible websrvs -m cron -a 'minute=*/10 job='/usr/sbin/ntpdate 172.30.0.100" name=synctime disabled=yes'    注释任务,不在生效
11、yum
Yum:管理包    ansible websrvs -m yum -a 'list=httpd'  查看程序列表    ansible websrvs -m yum -a 'name=httpd state=present' 安装    ansible websrvs -m yum -a 'name=httpd state=absent'  删除    可以同时安装多个程序包
12、service
Service:管理服务    ansible srv -m service -a 'name=httpd state=stopped'  停止服务    ansible srv -m service -a 'name=httpd state=started enabled=yes' 启动服务,并设为开机自启    ansible srv -m service -a 'name=httpd state=reloaded'  重新加载    ansible srv -m service -a 'name=httpd state=restarted' 重启服务
13、user、group
User:管理用户    home   指定家目录路径    system 指定系统账号    group  指定组    remove 清除账户    shell  指定shell类型    ansible websrvs -m user -a 'name=user1 comment="test user" uid=2048 home=/app/user1 group=root'    ansible websrvs -m user -a 'name=sysuser1 system=yes home=/app/sysuser1'    ansible websrvs -m user -a 'name=user1 state=absent remove=yes'  清空用户所有数据    ansible websrvs -m user -a 'name=app uid=88 system=yes home=/app groups=root shell=/sbin/nologin password="$1$zfVojmPy$ZILcvxnXljvTI2PhP2Iqv1"'  创建用户    ansible websrvs -m user -a 'name=app state=absent'  不会删除家目录    安装mkpasswd     yum insatll expect     mkpasswd 生成口令    openssl passwd -1  生成加密口令删除用户及家目录等数据Group:管理组    ansible srv -m group -a "name=testgroup system=yes"   创建组    ansible srv -m group -a "name=testgroup state=absent" 删除组
14、lineinfile
lineinfile: 相当于sed,修改文件
15、replace
replace: 相当于sed,主要用于正则匹配
16、setup
setup: 收集系统信息;(可以使用filter选项进行过滤),                如果主机过大,会影响执行速度,使用gather_facts: no 禁止收集facts信息,加快速度