Ansile

Ansible运维自动化工具(5)-模块

2021-08-01  本文已影响0人  刘小白DOER

    今天继续来测试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中存在循环的情况,返回多个结果。

上一篇下一篇

猜你喜欢

热点阅读