先放个链接,万一有人关注呢
↓ ↓ ↓ ↓ ↓
书接上回:Ansible自动化运维工具5.0:YAML实战详解
playbook是一个不同于使用Ansible命令行执行方式的模式,其功能更加强大、灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,可作为部署复杂应用程序的基础。playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。playbook主要通过YAML语言来配置,从而实现多种功能。
主机与用户
---- hosts: webserverusers: root
首行的“---”是YAML语言的固定格式。其中,hosts的值可以是任意与管理节点建立连接的被管理节点,也可以用“all”表示所有被管理节点。
任务列表用于指定被管理节点需要执行的任务
tasks:- name: running apacheservice: name=httpd state=running- name: disable selinuxcommand: /sbin/setenforce 0
tasks是指定任务列表的关键字,name表示任务名称,完全允许用户自定义,service与command表示调用的模块。此处需要注意的是,任务列表必须按照任务的执行顺序编辑。
handlers也可以叫作“触发器”,当前属性满足一定条件之后,就会执行handlers中的命令,也就是说只有被“触发”时才会执行。
handlers:- name: restart apacheservice: name=httpd statr=restarted
用于定义变量的关键字是vars
- hosts: allvars:http_port: 80
上述内容表示,将http服务的端口号定义为了80。
when在playbook中是表示条件判断的关键字
tasks:- name: reboot Red Hat hostcommand: /usr/sbin/rebootwhen: ansible_os_family=='Red Hat'
上述内容表示,当系统为Red Hat时,执行重启系统命令。首先Ansible会读取判断条件,当判断条件成立时,将执行command中的命令,当判断条件不成立时,则不执行任何命令。
循环语句在playbook中是一种简化代码的方式,通常关键字为with_items
tasks:- name: install LAMPyum: name={{item}} state=presentwith_items:- nginx- mysql-server- php
上述内容表示,首先将需要安装的应用通过“item”代替,然后在下方解释出了“item”所包含的应用。当“item”中的应用都安装完成之后,即循环语句执行完成。
循环语句中还支持使用列表,关键字为with_flattened
---packages_LNMP:- ['nginx','mysql-server','php']tasks:- name: install LNMPyum: name={{item}} state=presentwith_flattened:- packages_LNMP
上述内容,定义了一个packages_LNMP列表,其中包含了需要安装的应用,然后在yum模块中用“item”表示了需要安装的应用名称,最后表示“item”中包含了packages_LNMP列表中的内容。
当一段内容被重复使用时,可以将该内容单独写入到一个文件中,并使用include关键字进行引用。
编辑一个用于引用的文件
vim nginx.yml---- name: install nginxyum: name=nginx state=present- name: running nginxservice: name=nginx state=running
这是一个安装并启动Nginx服务的YAML文件
在playbook中可以通过include进行引用
tasks:- include: tasks/nginx.yml
上述内容表示,此处包含了nginx.yml文件中的内容,当Ansible读取时将会到nginx.yml文件中读取内容。
未完待续。。。。。。
来不及解释了,快上车!(进群看公告)

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。
↓↓↓ 点个在看,无需赞赏!
原文作者:运维book思议;如有侵权,请联系管理员删除。