- 本书赞誉
- 前言
- 第一部分 基础篇
- 第1章 系统基础信息模块详解
- 第2章 业务服务监控详解
- 第3章 定制业务质量报表详解
- 第4章 Python 与系统安全
- 第二部分 高级篇
- 第5章 系统批量运维管理器 pexpect 详解
- 第6章 系统批量运维管理器 paramiko 详解
- 第7章 系统批量运维管理器Fabric详解
- 第8章 从零开发一个轻量级 WebServer
- 第9章 集中化管理平台 Ansible 详解
- 第10章 集中化管理平台 Saltstack 详解
- 第11章 统一网络控制器 Func 详解
- 第12章 Python 大数据应用详解
- 第三部分 案例篇
- 第13章 从零开始打造 B/S 自动化运维平台
- 第14章 打造 Linux 系统安全审计功能
- 第15章 构建分布式质量监控平台
- 第16章 构建桌面版 C/S 自动化运维平台
9.5 Ansible 常用模块及 API
Ansible提供了非常丰富的功能模块,包括Cloud(云计算)、Commands(命令行)、Database(数据库)、Files(文件管理)、Internal(内置功能)、Inventory(资产管理)、Messaging(消息队列)、Monitoring(监控管理)、Net Infrastructure(网络基础服务)、Network(网络管理)、Notification(通知管理)、Packaging(包管理)、Source Control(版本控制)、System(系统服务)、Utilities(公共服务)、Web Infrastructure(Web基础服务),等等,更多模块介绍见官网模块介绍(网址:http://ansibleworks.com/docs/modules.html)。模块默认存储目录为/usr/share/ansible/,存储结构以模块分类名作为目录名,模块文件按分类存放在不同类别目录中。命令行调用模块格式:ansible<pattern_goes_here(操作目标)>-m<module_name(模块名)>-a<module_args(模块参数)>,其中默认的模块名为command,即“-m command”可省略。获取远程webservers组主机的uptime信息格式如图9-3所示。
图9-3 获取主机“uptime”信息
以上命令等价于ansible webservers-a"uptime",获得模块的帮助说明信息格式:ansible-doc<模块名>,得到ping模块的帮助说明信息如图9-4所示。
图9-4 ping模块帮助信息
在playbooks中运行远程命令格式如下:
- name: reboot the servers action: command /sbin/reboot -t now
Ansible 0.8或以上版本支持以下格式:
- name: reboot the servers command: /sbin/reboot -t now
Ansible提供了非常丰富的模块,涉及日常运维工作的方方面面。下面介绍Ansible的常用模块,更多模块介绍见官方说明。
1.远程命令模块
(1)功能
模块包括command、script、shell,都可以实现远程shell命令运行。command作为Ansible的默认模块,可以运行远程权限范围所有的shell命令;script功能是在远程主机执行主控端存储的shell脚本文件,相当于scp+shell组合;shell功能是执行远程主机的shell脚本文件。
(2)例子
ansible webservers -m command -a "free -m" ansible webservers -m script -a "/home/test.sh 12 34" ansible webservers -m shell -a "/home/test.sh"
2.copy模块
(1)功能
实现主控端向目标主机拷贝文件,类似于scp的功能。
(2)例子
以下示例实现拷贝/home/test.sh文件至webserver组目标主机/tmp/目录下,并更新文件属主及权限(可以单独使用file模块实现权限的修改,格式为:path=/etc/foo.conf owner=foo group=foo mode=0644)。
# ansible webservers -m copy -a "src=/home/test.sh dest=/tmp/ owner=root group=root mode=0755"
3.stat模块
(1)功能
获取远程文件状态信息,包括atime、ctime、mtime、md5、uid、gid等信息。
(2)例子
ansible webservers -m stat -a "path=/etc/sysctl.conf"
4.get_url模块
(1)功能
实现在远程主机下载指定URL到本地,支持sha256sum文件校验。
(2)例子
ansible webservers -m get_url -a "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes"
5.yum模块
(1)功能
Linux平台软件包管理操作,常见有yum、apt管理方式。
(2)例子
ansible webservers -m apt -a "pkg=curl state=latest" ansible webservers -m yum -a "name=curl state=latest"
6.cron模块
(1)功能
远程主机crontab配置。
(2)例子
ansible webservers -m cron -a "name='check dirs' hour='5,2' job='ls -alh > /dev/null'"
效果如下:
#Ansible: check dirs * 5,2 * * * ls -alh > /dev/nullsalt '*' file.chown /etc/passwd root root
7.mount模块
(1)功能
远程主机分区挂载。
(2)例子
ansible webservers -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext3 opts=ro state=present"
8.service模块
(1)功能
远程主机系统服务管理。
(2)例子
ansible webservers -m service -a "name=nginx state=stopped" ansible webservers -m service -a "name=nginx state=restarted" ansible webservers -m service -a "name=nginx state=reloaded"
9.sysctl包管理模块
(1)功能
远程Linux主机sysctl配置。
(2)例子
sysctl: name=kernel.panic value=3 sysctl_file=/etc/sysctl.conf checks=before reload=yessalt '*' pkg.upgrade
10.user服务模块
(1)功能
远程主机系统用户管理。
(2)例子
#添加用户johnd; ansible webservers -m user -a "name=johnd comment='John Doe'" #删除用户johnd; ansible webservers -m user -a "name=johnd state=absent remove=yes"
提示 playbooks模块调用格式如下,以command模块为例(0.8或更新版本格式):
-name:reboot the servers
command:/sbin/reboot-t now
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论