目录
一、playbook简介
1.什么是playbook
Ansible Playbook 是设定自动化任务的一种蓝图,可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。
Ansible Playbook 本质上是一些框架,是一些预先编写的代码,开发人员可以用作临时模板或起始模板。Ansible Playbook 常被用于自动化 IT 基础架构(例如,操作系统和 Kubernetes 平台)、网络、安全系统,以及开发人员角色(例如 Git)。
Ansible Playbook 可以帮助 IT 人员进行应用、服务、服务器节点或其他设备的编程,无需花费人力去从头创建所有事物。Ansible Playbook 及其中的条件、变量和任务,都可以无限期保存、分享或重复使用。
2.playbook组成
(1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行
(2)Variables:变量
(3)Templates:模板
(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作
(5)Roles:角色
二、应用实例
1.使用playbook安装启用httpd服务
首先编写xxx.yaml文件
--- #多个yaml文件以---开头,以表明这是一个yaml文件,可省略
- name: apache play #定义一个play的名称,可省略
gather_facts: false #设置不进行facts信息收集(即setup模块收集信息),这可以加快执行速度,如果不使用其中的信息可省略
hosts: webservers #指定要执行任务的被管理主机组,如多个主机组用冒号:分隔
remote_user: root #指定被管理主机上执行任务的用户
tasks: #定义任务列表,任务列表中的各任务按次序逐个在hosts中指定的主机上执行
- name: disable selinux #自定义任务名称
command: '/usr/sbin/setenforce 0' 键值对,键是ansible模块,值是 -a 中的内容
ignore_errors: true #如执行命令的返回值不为0,就会报错,tasks停止,可使用ignore_errors忽略失败的任务
- name: disable firewalld
service: name=firewalld state=stopped enabled=no
- name: prepare local repo
copy: src=/etc/yum.repos.d/local.repo dest=/etc/yum.repos.d/local.repo
- name: mount cdrom
mount: src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted
- name: install apache
yum: name=httpd state=latest
- name: prepare httpd configuration file
copy: src=/opt/httpd.conf dest=/etc/httpd/conf/httpd.conf mode=644 owner=apache group=apache
notify: "restart httpd" #如以上操作后为changed的状态时,会通过notify指定的名称触发对应名称的handlers操作
- name: start httpd
service: name=httpd state=started enabled=yes
handlers: #handlers中定义的就是任务,此处handlers中的任务使用的是service模块
- name: restart httpd #notify和handlers中任务的名称必须一致
service: name=httpd state=restarted
运行playbook
ansible-playbook xxx.yaml
补充参数:
-k(–ask-pass):用来交互输入ssh密码
-K(-ask-become-pass):用来交互输入sudo密码
-u:指定用户

Ansible在执行完某个任务之后并不会立即去执行对应的handler,而是在当前play中所有普通任务都执行完后再去执行handler,这样的好处是可以多次触发notify,但最后只执行一次对应的handler,从而避免多次重启。
2.使用playbook安装启用nginx服务
首先编写xxx.yaml文件
---
- name: nginx play
gather_facts: false
hosts: webservers
remote_user: root
tasks:
- name: test connection
pin

Ansible Playbook是自动化任务的蓝图,用于执行复杂的IT操作。本文详细介绍了playbook的组成,包括tasks、variables、templates和handlers,以及应用实例如安装启用httpd和nginx服务。此外,还讲解了playbook的其他用法,如语法检查、条件判断、sudo切换用户、tags模块和模板使用。最后,阐述了Roles模块的作用和结构,以及如何创建和组织Roles。
最低0.47元/天 解锁文章
1943

被折叠的 条评论
为什么被折叠?



