1.默认模块command

此命令不支持 $VARNAME < > | ; & 等,可能用shell模块实现

例: ansible webs -m command -a 'hostname'

2.shell

和command差不多一样,支持特殊符号

例: ansible webs -m shell -a 'hostname'

3.script

在远程主机上运行ansible服务器上的脚本(无需执行权限)

例:ansible webs -m script -a /script/install.sh

4.copy

从ansible服务器复制文件到远程主机 PS:src=file ,如果没写路径,则为当前目录或目录下的file目录下的file文件

#如果目标存在,默认覆盖,此处指定先备份

例:ansible webs -m copy -a "src=/script/install.sh dest=/root/install.sh backup=yes "

#content,可以生成指定内容文件

ansible webs -m copy -a "content='hello word' dest=/tmp/test.txt "

5.fetch

拉取远程主机文件到ansible本机,,与copy相反,不支持目录

例:

ansible webs -m fetch -a "src=/script/install.sh dest=/tmp/install.sh"

6.get_url

将文件从http、https、ftp下载到被管理节点

常用参数:

  • url:下载文件的url
  • dest:下载路径(绝对路径)
  • owner:属主
  • group:属组
  • mode:权限
  • force:如果yes,dest不是目录,将每次下载文件,如果内容改变,替换文件。如果否,则只有在目标不存在时才会下载该文件
  • url_username: 用于http基本认证的用户名
  • url_password: 用于http基本认证的密码
  • validate_certs:如果“no”,SSL证书将不会被验证。 适用于自签名证书在私有网站上使用
  • timeout:URL请求的超时时间,秒为单位

7.unarchive

解包解压缩

两种方式:

1、将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes,此为默认值,可省略

2、将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no

常用参数:

  • copy:默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件

  • remote_src:和copy功能一样且互斥,用法相反,yes表示在远程主机,不在ansible主机,no表示文件在ansible主机上

  • src:源路径

  • dest:远程主机上的目标路径

  • mode:解压缩后文件的权限

例:

ansible webs -m unarchive -a 'src=/data/foo.tgz dest=/var/lib/foo owner=wang group=bin'
ansible webs -m unarchive -a 'src=/tmp/foo.zip dest=/data copy=no mode=0777'
ansible webs -m unarchive -a 'src=https://example.com/example.zip dest=/data copy=no'

ansible websrvs -m unarchive -a 'src=https://releases.ansible.com/ansible/ansible-2.1.6.0-0.1.rc1.tar.gz dest=/data/  owner=root remote_src=yes'
ansible websrvs -m unarchive -a 'src=http://nginx.org/download/nginx-1.18.0.tar.gz dest=/usr/local/src/ copy=no'

8.archive

打包压缩保存在被管理端

例:

ansible webs -m archive -a "path=/var/logs/ dest=/tmp/logs.tar.bz2 format=bz2 owner=root mode=0600"

9.hostname

管理主机名

例:

ansible webs -m hostname -a 'name=web'

10.cron

计划任务

例:

#创建任务
ansible webs -m cron -a 'hour=2 minute=30 weekday=1-5 name="backup mysql"
job=/root/mysql_backup.sh'

ansible websrvs  -m cron -a "minute=*/5 job='/usr/sbin/ntpdate ntp.aliyun.com &>/dev/null' name=Synctime"

#禁用计划任务
nsible websrvs  -m cron -a "minute=*/5 job='/usr/sbin/ntpdate ntp.aliyun.com &>/dev/null' name=Synctime disabled=yes"

#启用任务
ansible websrvs  -m cron -a "minute=*/5 job='/usr/sbin/ntpdate ntp.aliyun.com &>/dev/null' name=Synctime disabled=no"

#删除任务
ansible websrvs -m cron -a "name='backup mysql' state=absent"

11.yum 和 apt

包管理工具

例:

#安装
ansible webs -m yum -a 'name=httpd state=present'

#升级除kernel和foo开头以外的包
ansible webs -m yum -a 'name=* state=lastest execlude=kernel*,foo*'

#卸载
ansible webs -m yum 'name=httpd state=absent'

12.service

服务管理

例:

ansible webs -m service -a 'name=httpd state=started enabled=yes'

13.user

管理用户

例:

#创建用户
ansible webs -m user -a "name=httpd comment='web user' uid='1000' group='httpd' shell=/sbin/nologin create_home=no "

#删除用户,remove=yes 删除用户及家目录数据,默认no
ansible webs -m user -a " name=httpd state=absent remove=yes"

14.group

管理组

例:

#创建组
ansible webs -m group -a "name=nginx gid=90 system=yes"

#删除组
ansible webs -m group -a "name=nginx state=absent"