今天继续来测试Ansible模块。 笔者通过ansible-doc -l | wc -l统计了一下,有3387个模块,今后遇到就尽量慢慢测试一番。
1、raw模块
ansible-doc -s raw:获取raw模块的使用帮助。
此模块使用SSH直接执行linux命令。

command模块无法使用管道,raw模块就可以,模块相对于使用SSH直接执行linux命令,不会进入到ansible的模块子系统中。shell模块也可以,但是shell模块还可以执行远程服务器上的shell脚本文件(脚本文件使用绝对路径)。script模块可以在远程服务器上执行主控节点的脚本文件,功能相对于scp+shell的组合,脚本执行完毕后再远程服务器上删除脚本文件。

2、apt模块/yum模块
ansible-doc -s apt:获取apt模块的使用帮助。在debian/ubuntu系统中安装、删除软件。
ansible-doc -s yum:获取yum模块的使用帮助。在redhat系统中安装、删除软件。
笔者以yum模块来测试。
更新源:ansible tcloud -m yum -a "update_cache=yes" -become

使用root权限安装sshpass工具:ansible tcloud -m yum -a "name=sshpass state=present" -become 。

3、get_url模块
ansible-doc -s get_url:获取get_url模块的使用帮助。
此模块用于从网络上下载文件。
笔者现在宿主机上启动一个web服务器:python -m http.server 80

使用get_url模块来获取文件到本虚拟机上:ansible localhost -m get_url -a "url=http://192.168.31.40/test.txt dest=/tmp/test.txt" 还可以通过 mode=0444 来设置文件的权限。

4、unarchive模块
ansible-doc -s unarchive:获取unarchive模块的使用帮助。
此模块用于解压文件。
笔者现在被管理机上打包个test.tar.gz。

远程解压到/tmp目录:ansible tcloud -m unarchive -a "src=/home/lighthouse/test.tar.gz dest=/tmp remote_src=yes"

远程查看解压的文件:

5、git模块
ansible-doc -s git:获取git模块的使用帮助。
此模块用于在远程服务器上执行git操作,一般用于源码安装软件时,远程服务器需要有git软件。
笔者使用自己的仓库来测试:ansible tcloud -m git -a "repo=https://github.com/laufei90/python.git dest=/home/lighthouse/git_pythons"

6、stat模块
ansible-doc -s stat:获取stat模块的使用帮助。
此模块用于获取远程服务器上的文件信息,可以获取atime、mtime、ctime、checksum、size、uid、gid等信息。
通过path在指定路径:ansible tcloud -m stat -a "path=/home/lighthouse/test.tar.gz"

7、systcl模块
ansible-doc -s systcl:获取systcl模块的使用帮助。
此模块与linux下的systcl相似,用于控制linux的内核参数。
清理缓存:ansible tcloud -m sysctl -a "name=vm.drop_caches value=3" -become
清理前后通过 ansible tcloud -m shell -a "free -m" 查看有明显变化。

8、synchronize模块
ansible-doc -s synchronize:获取synchronize模块的使用帮助。
此模块是对rsync命令的封装,也可以使用command模块来执行rsync命令,但synchronize模块使用比rsync命令更加简单。
同步本地目录到远程服务器: ansible tcloud -m synchronize -a "src=pythons dest=/tmp/pythons"

远程查看/tmp/pythons存在。

再次同步,发现文件没有变化。

最后来总结一下模块的返回值:
changed:几乎所有的ansible模块都i会返回该变量,表示模块是否对远程主机执行了修改。
failed:模块未能执行完成,failed为true。
msg:模块执行失败的原因,常见的有ssh连接失败,没有执行权限等。
rc:与命令行相关的模块会返回rc,表示执行linux命令的返回码。
stdout:与rc类似,返回标准输出的结果。
stderr:与rc类似,返回标准错误的结果。
backup_file:如果存在backup选项的模块,用来返回备份文件的路径。
results:应用在playbook中存在循环的情况,返回多个结果。
网友评论