DevOps-运维管理工具-Ansible

Ansible 简介

Ansible 基于python2-paramiko模块开发,具备众多运维工具的优点,可以实现系统的批量配置、程序批量部署和批量运行命令。Ansilbe 基于模块实现自动化输出能力,本质上是一个框架,本身没有批量部署能力,真正具有批量部署能力的是Ansilbe中所运行的模块。

  • 能力
    • 模块管理
    • 负责内部插件之间的通信和监控
    • 负责管理资源清单
    • 负责内部模块额管理;
    • 具备多任务模式、并可以进行参数优化配置(核心功能)
  • 特性
    • 无客户端模式,不需要再被管理主机上安装客户端软件。
    • 无server端概念,通过命令方式打通管道;
    • 通过模块实现多语言支持能力;
    • 使用YAML语言定制playbook;
    • 可以实现多级指挥
    • 轻量级和易用性。

Ansible的playbook

Ansible 有两种使用方式:playbook和AdHoc。

playbook 是一个配置管理系统,依托ansible 的框架实现批量机器的交互,它具有一些有点和特性。可以对执行过程进行编排,有序执行,对象分类和编组,有同步和异步的方式发起。

AdHoc,用/usr/bin/ansible 程序执行任务,使用playbook主要是将执行计划通过源码进行控制,进行配置的规范审核,同时进行配置的推送。

playbook的语言格式是YAML,避免让playbook 变成一种编程语言或者脚本。
由一个或者多个play构成,每个play中,角色通过映射的方式来定义,如有一组机器被映射成已知定义的角色。play中的内容称为task,,每一次task就是对ansible模块的一次调用。

主机和用户
play中基本都包含主机(hosts)和用户(remote_user)。

task列表
每一个play都包含一个任务列表,也就是task列表,每个task在其所对应的主机或主机组上执行完毕之后,才会触发执行下一个task。
运行playbook时,执行顺序是从上到下的,如有一个host执行task失败,那这个host会被从playbook的rotation列中移除,同时需要对playbook进行修正,修正后重新执行,而不是继续执行。task的目的是执行一个module,module具有幂等特性,重复执行,只会执行必要的变动。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注