Ansible系列(5): Playbook

写在playbook之前

经过前2个模块的锻炼,我相信只要会使用shell的人都发现ansible强大之处了。

这里要引入真正强大的地方–playbook。让你摆脱执行shell的困境。

Playbook定义

Playbook的定义,用中文我很难准确的说明它的意思。还是引用官方的吧:

Playbooks are Ansible’s configuration, deployment, and orchestration language. They can describe a policy you want your remote systems to enforce, or a set of steps in a general IT process.

大概意思就是说,playbook是集ansible的配置管理、部署动作执行、编排能力于一身的语言文本。它用来编排并执行你想远程节点执行的常规步骤、流程。很拗口,大概大家明白意思就行了。

另外有个简单点的说法,也是来自官方:

If Ansible modules are the tools in your workshop, playbooks are your design plans.

意思就是ansible模块是你工作的伙伴,那么Playbook就是你工作计划。

一个负责执行,一个负责计划,Nice。

一个简单的playbook

一个简单的playbook应该如下:

---    <---playbook的开头
- hosts: webservers   <--- 声明这个Playbook运行在哪个节点群组
  vars:   <--- 声明 变量
    http_port: 80  <--- 变量http_port 值为80
    max_clients: 200
  remote_user: root  <---声明远程执行的用户为root
  tasks:  <---声明远程执行的任务
  - name: ensure apache is at the latest version <---ansible name模块,用于当文字说明
    yum: pkg=httpd state=latest <---ansible yum模块,以后会讲到
  - name: write the apache config file
    template: src=/srv/httpd.j2 dest=/etc/httpd.conf <---ansible template模块,以后会讲到
    notify:   <---ansible handler用法以后会讲到
    - restart apache
  - name: ensure apache is running (and enable it at boot)
    service: name=httpd state=started enabled=yes <---ansible service模块,以后会讲到
  handlers: <---ansible handler用法以后会讲到
    - name: restart apache
      service: name=httpd state=restarted

上面这个playbook干了什么事,讲解下task部分,可能熟悉Linux的人也能猜个78成:

1. 使用yum安装了最新版apache

2. 将httpd.conf配置文件从ansible执行节点的/srv/httpd.j2覆盖到了/etc/httpd.conf

3. 调用Handler重启apache

4. 调用service确认apache已经重启过并且设置为开机就启动apache

5. 定义handler

上面这么多事,如果用传统的shell来执行会很麻烦,有多麻烦,玩过shell的都明白。

能明白点它事做啥的了吧?

它的格式是YAML语法,可以下来自己看看,很简单的东西。

再次声明

从本章后的新模块,将采取playbook中的调用方法做介绍。不再用ansible来做案例了。

时间: 2024-10-22 00:56:12

Ansible系列(5): Playbook的相关文章

Ansible系列(六):各种变量定义方式和变量引用

本文目录:1.1 ansible facts1.2 变量引用json数据的方式 1.2.1 引用json字典数据的方式 1.2.2 引用json数组数据的方式 1.2.3 引用facts数据1.3 设置本地facts1.4 输出和引用变量1.5 注册和定义变量的各种方式 1.5.1 register注册变量 1.5.2 set_fact定义变量 1.5.3 vars定义变量 1.5.4 vars_files定义变量 1.5.5 roles中的变量 1.5.6 命令行传递变量 1.5.7 inve

Ansible系列命令用法详解与使用

Ansible系列命令用法与使用 在上一个文章中已经完成了Ansible的安装,这片文章主要的用来记录Ansible一些命令的用法详解及其使用场景.好了非话不多说,'上菜吧'. Ansible命令行执行方式有Ad-hoc.Ansible-playbook两种方式.Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于API开发类似的Web化产品.此篇文章主要针对于Ad-hoc.Ansible-playbook两种方式做详细介绍. 什么是Ad-hoc.Ansible-p

ansible中的playbook

ansible中的playbook,将常用的模块任务,写入到playbook中,ansible方便快捷的管理主机. playbook使用yaml语言来书写,简单说下yaml语言. 1.YAML简介 YAML是一个可读性高的用来表达资料序列的格式.优点 YAML的可读性好 YAML和脚本语言的交互性好 YAML使用实现语言的数据类型 YAML有一个一致的信息模型 YAML易于实现 YAML可以基于流来处理 YAML表达能力强扩展性好 YAML的语法和其他高阶语言类似并且可以简单表达清单.散列表.标

ansible系列第二篇(模块使用)

ansible系列第二篇(模块使用) 模块使用 设置ansible提权 在hosts文件加入sudo提权的密码: 18.18.23.102 ansible_become_pass='passwd' 执行: ansible test -S -R root -m shell -a "ls -l /" 查看ansible有那些模块: ansible-doc -l 获取各个模块详细帮助信息 ansible-doc -s ping ping模块: ansible test -m ping 从受控

ansible核心模块playbook介绍

ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible playbook之前,很有必要把yaml的语法格式.引用方式做个梳理. 1.1 初步说明 以一个简单的playbook为例,说明yaml的基本语法. --- - hosts: 192.168.100.59,192.168.100.65 remote_user: root pre_tasks: - name

Ansible系列(五):playbook应用和roles自动化批量安装示例

html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary { display: block } audio,canvas,progress,video { display: inline-block; vertical-align: baseline } audio:not([co

运维工具Ansible浅谈playbook讲解以及YAML语法和JSON语法的互化

引言:运维发展到今天已经远远不是传统的运维做一些重复性的枯燥工作,面对海量爆发的访问量,传统的运维已经很吃力,比如让你装三五台机器的系统,这个so easy,那要是安装几百上千台呢,还easy吗.我要安装nginx服务,并提供好相应的端口转发机制以及location资源访问机制,但是有多发十几台这样的机制,并且每台机器转发机制都不相同,这个对我们来说是一个不小的挑战,因此运维进入了自动化时代,自动化运维就显得重要了.因此本文就是围绕自动化运维工具Ansible来展开的. 一,为什么要使用Ansi

ansible 系列教程

ansible 核心组件介绍 Architecture Diagram ansible core host iventory core modules custom modules playbook (yaml) connetc plugin  ansibles 的特性 基于python语言实现,有paramiko,Pyyaml和jinjia2 三个关键模块 部署简单,agegtlees,默认使用SSH协议 基于密钥认证 在inventory 文件中指定账号和密码 支持playbook基于"模块

Ansible系列(6): Yum模块

之前的文章里提到了这个Yum模块,作为承诺,这次拿它当第一了. Yum模块介绍 此处引用百度搜索的答案: Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器 既然是包管理器,平时我们如何使用它?拿centos为例: yum install git 排除proxy权限问题,你的机器该自动的安装好git.非常方便. 那么在ansible里,如何使用它? 还是使用shell/command或者其他模