Ansible Playbook 简介

发布于:2024-12-21 ⋅ 阅读:(191) ⋅ 点赞:(0)

你每做一件事,相当于扮演了一个角色, 你必须剧本, 做什么,该怎么做,做事的流程

  • Playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。

  • 通过 Playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的一系列 to-do-list ,而被控节点必须要完成。

  • Playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。 

  • playbook常用到的YMAL格式:

    • 文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。

    • 在同一行中,#之后的内容表示注释,类似于shell,python和ruby。

    • YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。

    • 同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。

  • play 中 hosts,variables(vars),roles,tasks等对象的表示方法都是键值中间以":"分隔表示,":"后面还要增加一个空格。

1、Playbook 文件介绍
[root@ansible-server ~]# vim mysql.yaml  vi vim
---
# 安装与运行mysql服务
- hosts: node2
  remote_user:  root 
  tasks:  
    - name: install mariadb-server package
      yum: 
        name: mariadb-server 
        state: present
    - name: starting mariadb service
      service: 
        name: mariadb 
        state: started
        enabled: true
      

- hosts: 192.168.234.102
  remote_user: root
  tasks:
    - name: install epel
      yum: 
        name: epel-release.noarch 
        state;latest
    - name: install nginx
      yum: 
        name: nginx 
        state: latest
    - name: start service
      service: 
        name: nginx 
        state: started 
        enabled: true      
  • 文件名称应该以 .yml/yaml 结尾,上面的例子就是 mysql.yml。其中,有三个部分组成:

1、host 部分
  • 使用 hosts 指示使用哪个主机或主机组来运行下面的 tasks ,

  • 每个 playbook 都必须指定 hosts ,hosts也可以使用通配符格式

  • 主机或主机组在 inventory 清单中指定,可以使用系统默认的/etc/ansible/hosts,也可以自己编辑,在运行的时候加上 -i 选项,指定清单的位置即可。在运行清单文件的时候,–list-hosts 选项会显示那些主机将会参与执行 task 的过程中。

2、remote_user 部分
  • 指定远端主机中的哪个用户来登录远端系统,在远端系统执行 task 的用户,可以任意指定,也可以使用 sudo,但是用户必须要有执行相应 task 的权限。

3、tasks 部分
  • 指定远端主机将要执行的一系列动作。

  • tasks 的核心为 ansible 的模块,前面已经提到模块的用法。

  • tasks 包含 name 和要执行的模块,name 是可选的,只是为了便于用户阅读,不过还是建议加上去,模块是必须的,同时也要给予模块相应的参数。

2、 playbook 使用
  • 使用ansible-playbook运行playbook文件,得到如下输出信息,输出内容为JSON格式。并且由不同颜色组成,便于识别。一般而言

    • | 绿色代表执行成功,系统保持原样

    • | 黄色代表系统代表系统状态发生改变

    • | 红色代表执行失败,显示错误输出 

  • 执行有三个步骤:

    • 收集 facts

    • 执行 tasks

    • 报告结果

2、Playbook 核心元素

  • Hosts:主机组;

  • Tasks:任务列表;

  • Variables:变量,设置方式有四种;

  • Templates:包含了模板语法的文本文件;

  • Handlers:由特定条件触发的任务;

3、Playbook 基本组件

  • Hosts:运行指定任务的目标主机

  • remoute_user:在远程主机上执行任务的用户;

  • sudo_user:

  • tasks:任务列表

  • 格式

tasks:
  – name:  TASK_NAME     # 这一步的名称
   module:  arguments
   notify:  HANDLER_NAME    #触发器后面定义的关键字是自定义(不要用ansible内置的关键字,防止误导程序)

handlers:
  – name:  HANDLER_NAME  # 这一步操作目的(注释)
    module:  argments
  • 模块,模块参数:

  • 格式:

    • action: module arguments

    • module: arguments

    • 注意:shell和command模块后面直接跟命令,而非key=value类的参数列表;

  • handlers:任务,在特定条件下触发;接收到其它任务的通知时被触发;

    • 某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;

    • 任务可以通过“tags“打标签,而后可在ansible-playbook命令上使用-t指定进行调用;


网站公告

今日签到

点亮在社区的每一天
去签到