1、setup

用来查看远程主机的一些基本信息

ansible web -m setup #由于主机基本信息较多,此处已单台主机为例 在这里插入图片描述

2、ping

用来测试远程主机的运行状态

ansible web -m ping 在这里插入图片描述

3、file

相关选项如下: force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no group:定义文件/目录的属组 mode:定义文件/目录的权限 owner:定义文件/目录的属主 path:必选项,定义文件/目录的路径 recurse:递归设置文件的属性,只对目录有效 src:被链接的源文件路径,只应用于state=link的情况 dest:被链接到的路径,只应用于state=link的情况 state: directory:如果目录不存在,就创建目录 file:即使文件不存在,也不会被创建 link:创建软链接 hard:创建硬链接 touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间 absent:删除目录、文件或者取消链接文件

ansible web -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link" #远程文件符号链接创建 在这里插入图片描述 ansible web -m command -a " ls –al /tmp/resolv.conf" #远程文件信息查看 在这里插入图片描述 ansible web -m file -a "path=/tmp/resolv.conf state=absent" #远程文件符号链接删除 在这里插入图片描述

4、copy

复制文件到远程主机 相关选项如下: backup:在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no content:用于替代“src”,可以直接设定指定文件的值 dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录 directory_mode:递归设定目录的权限,默认为系统默认权限 force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes others:所有的file模块里的选项都可以在这里使用 src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。

ansible web -m copy -a "src=/tmp/123.txt dest=/tmp/123.txt owner=root group=root mode=0644" #将本地文件“/ tmp/123.txt”复制到远程服务器 在这里插入图片描述

5、command

在远程主机上执行命令,默认模块,此命令不支持$NAME、<、>、|、;、&等变量、特殊字符、管道。

raw, shell, command的区别:三个模块都能调用对象机器上的某条指令或者某个可执行文件; raw和shell模块很像, 都支持管道; command模块不支持管道

相关选项如下: creates:一个文件名,当该文件存在,则该命令不执行 free_form:要执行的linux指令 chdir:在执行指令之前,先切换到该目录 removes:一个文件名,当该文件不存在,则该选项不执行 executable:切换shell来执行指令,该执行路径必须是一个绝对路径

ansible web -m command -a "uptime" #查看web组主机的系统运行时间 在这里插入图片描述

6、shell

远程执行脚本 常用参数 free_form参数 :必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form,具体解释参考 command 模块。 chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。 creates参数 :使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command 模块中的解释。 removes参数 :使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考 command 模块中的解释。 executable参数:默认情况下,shell 模块会调用远程主机中的 /bin/sh 去执行对应的命令,通常情况下,远程主机中的默认 shell 都是 bash。如果你想要使用其他类型的 shell 执行命令,则可以使用此参数指定某种类型的 shell 去执行对应的命令。指定 shell 文件时,需要使用绝对路径。

示例: 1)先在本地创建一个SHELL脚本 cat /tmp/rocketzhang_test.sh #!/bin/sh date +%F_%H:%M:%S #chmod +x /tmp/rocketzhang_test.sh 2)将创建的脚本文件分发到远程 ansible web -m copy -a "src=/tmp/123.sh dest=/tmp/123.sh owner=root group=root mode=0755" 在这里插入图片描述 3)远程执行 ansible web -m shell -a "/tmp/123.sh" 或者 ansible web -m shell -a "bash /tmp/123.sh" 在这里插入图片描述 4)其他演示 ansible ansible-demo3 -m shell -a "chdir=/testdir echo mytest > test" 在这里插入图片描述 由于shell支持管道与重定向等符号。上面命令打印出mytest并写入test文件 ansible web -m shell -a "chdir=/tmp echo mytest > test ; cat /tmp/test" 在这里插入图片描述

7、yum

用于软件的安装,升级,卸载,支持红帽.rpm软件的管理 相关选项如下: conf_file:设定远程yum执行所以来的yum配置文件 disable_gpg_check: 关闭gpg_check name:需要安装的软件名称 update_cache:安装软前更新缓存 disablerepo:不启用某个源 enablerepo:指定repo源名称 skip_broken:跳过异常软件节点 state:软件包状态,包括:installed,present,latest,removed,absent,其中installed and present等效,latest标志安装yum中最新版本,removed和absent表示卸载

ansible web -m yum -a "name=lrzsz state=installed" 在这里插入图片描述 ansible web -m yum -a "name=lrzsz state=removed" 在这里插入图片描述

8、service

管理远程主机上的服务;要管理远程主机中的某个服务,那么这个服务必须能被 BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart 中的任意一种所管理,否则 service 模块也无法管理远程主机的对应服务。

常用参数 name参数:用于指定需要操作的服务名称,比如 nginx。 state参数:用于指定服务的状态, state有为 started、stopped、restarted、reloaded。 enabled参数:此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动。

ansible web –m service –a “name=httpd state=started” #给本地linux系统安装httpd服务,并设置开机自启

9、stat

获取远程文件状态信息, 包括atime, ctime, mtime, md5, uid, gid等信息.

ansible web -m stat -a "path=/etc/resolv.conf" 在这里插入图片描述

10、get_url

#主要用于从http、ftp、https服务器上下载文件(类似于wget)

常用选项 sha256sum:下载完成后进行sha256 check; timeout:下载超时时间,默认10s url:下载的URL url_password、url_username:主要用于需要用户名密码进行验证的情况 use_proxy:是事使用代理,代理需事先在环境变更中定义 dest:文件下路后的保存路径

ansible web -m get_url -a "url=file:///root/free.sh dest=/tmp" #将本地/root/free.sh下载到/tmp 在这里插入图片描述 将远端的url连接下载到本地/tmp目录下 ansible web -m get_url -a "url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/tmp" 在这里插入图片描述

11、script

运行脚本 ansible web -m script -a “/root/sys_init.sh”

12、fetch

从客户端取文件至服务端,与copy相反,目录可先tar ansible web -m fetch -a "src=/root/a.sh dest=/home/script"

13、Hostname

管理主机名 ansible web -m hostname -a "name=node"

14、Cron

计划任务,支持分时日月周,即 minute hour dag month weekday ansible web -m cron -a "minute=*/5 job=/usr/sbin/ntpdate 172.16.0.1 & > /dev/null name=sysctime" #创建任务 ansible web -m cron -a "state=absent name=sysctime" #删除任务

15、User

管理用户 ansible web m user –a 'name=user1 comment="test user" uid=1000 home=/app/user1 group=root' #创建用户,用户说明,uid,指定家目录和加入的组 ansible web –m user –a "name=user2 system=yes home=/app/user2" #创建用户,且为系统用户并指定家目录 ansible web –m user –a "name=user2 state=absent remove=yes" # 删除用户及家目录等数据

16、Group

管理组 ansible web –m group –a "name=testgroup system=yes" #创建组并未系统组 ansible web –m group –a "name=testgroup state=absent" #删除组