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"