)
前言前述文章自动化运维-ansible常用模块详解已经详细介绍过ansible 常用模块的Ad-hoc命令实现方式适合执行 临时性、简单的任务而使用较多的方式是通过ansible playbook实现多任务执行无需重复多次输入命令。本篇文章将通过剧本的方式详细介绍ansible常用模块shell、script、file、fetch、copy、template、yum、yum_repository、service、cron、user、group、unarchive的实现。一、shell模块编写剧本用ansible shell模块安装并启动mariadb----hosts:webservertasks:-name:install mariadbshell:yum install-y mariadb-name:install mariadb-servershell:yum install-y mariadb-server-name:start mariadb serviceshell:systemctl start mariadb从上述playbook可以看出剧本中包含3个任务分别是install mariadb、install mariadb-server、start mariadb serviceshell模块执行的命令和直接服务器上执行的shell命令一样。在以上执行结果中有一个Gathering Facts任务这个任务会收集目标节点的信息收集的信息具体信息可以通过命令ansible webserver -m setup查看。可以通过ansible变量获取这些信息后续将会介绍如果剧本中没有指明是否收集信息这默认会自动收集节点信息。如果剧本中用不到与节点相关的信息这可以通过指明gather_facts: no关掉信息收集这样可以提高剧本的执行速度。二、script模块编写ansible playbook使用script模块获取被管理节点的磁盘使用情况。----hosts:webservergather_facts:notasks:-name:获取磁盘使用信息script:/data/project1/disk_check.shregister:diskinfo-name:显示磁盘使用信息debug:msg:{{diskinfo}}这个剧本通过执行控制节点上的脚本/data/project1/disk_check.sh获取被管理节点的磁盘使用信息由于脚本执行返回的结果在剧本执行结果中不能显示需要将返回结果通过register注册为一个变量然后通过debug模块读取磁盘的信息。三、file模块编写ansible playbook使用file模块创建文件、目录、链接文件。----hosts:webservergather_facts:notasks:-name:create a filefile:path:/data1/file.txtstate:touchmode:644-name:create a directoryfile:path:/data2/state:directorymode:755-name:create a linkfile:src:/data1/file.txtdest:/data1/linkfile.txtstate:link删除链接文件、文件、目录----hosts:webservergather_facts:notasks:-name:delete directoryfile:path:/data2state:absent-name:delete filefile:path:/data1/file.txtstate:absent-name:delete link filefile:path:/data1/linkfile.txtstate:absent四、copy模块编写ansible playbook使用copy模块将控制节点的文件拷贝到被管理节点。----hosts:webservergather_facts:notasks:-name:copy file to remote targetcopy:src:/etc/hostsdest:/tmp/backup:yesmode:0644五、template模块编写ansible playbook使用template模块将控制节点的模板文件拷贝到被管理节点。----hosts:webservertasks:-template:src:template.j2dest:/tmp/以上模板文件中的变量可以通过ansible webserver -m setup获取。六、yum模块编写ansible playbook使用yum模块安装tftp和php。----hosts:webservergather_facts:notasks:-name:yum install tftp and phpyum:name:tftp,phpstate:present七、yum_repository模块编写ansible playbook使用yum_repository模块创建一个yum仓库。----hosts:webservertasks:-name:create a yum repoyum_repository:name:centos_repodescription:create a centos yum repobaseurl:http://mirrors.aliyun.com/centos/$releasever/os/$basearch/enabled:yesgpgcheck:no八、service模块编写ansible playbook使用service模块对nginx服务进行管理。----hosts:webservertasks:-name:start nginx#启动nginxservice:name:nginxstate:started-name:restart nginx#重启nginxservice:name:nginxstate:restarted-name:stop nginx#停止nginxservice:name:nginxstate:stopped-name:reload nginx#重载nginxservice:name:nginxstate:reloaded-name:enable nginx#配置nginx服务重启自启动service:name:nginxenabled:yes九、cron模块编写ansible playbook使用cron模块添加计划任务。----hosts:webservertasks:-name:add cron to hostcron:name:clean filejob:find /tmp -type f -mtime 7 -deleteminute:0hour:2任务计划已经被添加到被管理节点。十、user模块编写ansible playbook使用user模块在被管理节点上添加用户。----hosts:webservertasks:-name:add useruser:name:user10#添加用户user10shell:/bin/bashcreate_home:yes#创建家目录十一、unarchive模块编写ansible playbook使用unarchive模块将控制节点上的压缩包拷贝到被管理节点并解压。----hosts:webservertasks:-name:unarchive packageunarchive:src:nginx-1.30.4.tar.gzdest:/tmp/以上介绍了11个模块的playbook相信对playbook已经有一个较深入的理解后续将继续介绍在playbook中使用变量、条件、循环等使剧本具有更多特性能够更加灵活的管理服务器。如果您对本节介绍内容有疑问欢迎留言交流