当前位置: 首页 > article >正文

Ansible Playbook 简介

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

  • 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指定进行调用;


http://www.kler.cn/a/440847.html

相关文章:

  • 三维移动游戏
  • C++智能指针详解
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering-简洁版
  • 05、SpringMVC全注解开发
  • 音频声音太小怎么调大?调大音频声音的几种方法
  • STM32-笔记1-点亮led灯
  • sqlilabs靶场二十一关二十五关攻略
  • app的测试范围以及web和app的测试区别
  • 搭建Tomcat(二)--反射的应用
  • 详细描述一下 Elasticsearch 更新和删除文档的过程。
  • 在VScode中对R语言进行环境配置
  • 沈剑-架构师训练营
  • Mongodb 集群搭建
  • 项目二十三:电阻测量(需要简单的外围检测电路,将电阻转换为电压)测量100,1k,4.7k,10k,20k的电阻阻值,由数码管显示。要求测试误差 <10%
  • k8s+rancher配置滚动发布更新时服务不可用
  • STM32--IO引脚复用
  • 留学论文Introduction辅导:论文开头introduction怎么写
  • 19. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--收支记录
  • OpenShift 4 - 多云管理(2) - 配置多集群观察功能
  • 【0368】Postgres内核 清除所有旧的 relcache cache files ( 11 )