0
点赞
收藏
分享

微信扫一扫

运维Ansible自动化工具概述


运维的工作内容

  • 安装系统:pxe、kickstart、cobbler、image template
  • 安装应用、配置应用、启动应用(服务):puppet、saltstack、chef
  • 发布程序:puppet、saltstack、chef
  • 监控(服务器、系统、应用、程序):zabbix

程序发布

  • 灰度发布
  • 金丝雀发布

ansible解决的问题:

  • 批量安装应用、配置应用、启动应用
  • 批量发布程序

ansible的资源站点

  • https://www.ansible.com/
  • https://github.com/ansible/ansible

Ansible的综述

ansible是一款无需在被管理主机上安装客户端,基于SSH对多台目标主机进行同时操作的轻量级的管理软件,借助各个内部的功能模块,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible简介

ansible基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,能够实现批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

  • 连接插件connection plugins:负责和被监控端实现通信;
  • host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
  • 各种模块核心模块、command模块、自定义模块;
  • 借助于插件完成记录日志邮件等功能;
  • playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务

ansible的软件结构:

运维Ansible自动化工具概述_ansible

  • Host Inventory:主机清单,也就是被管理的主机列表
  • Playbooks:ansible的剧本,可想象为将多个任务放置在一起,一块执行
  • Core Modules:ansible的核心模块
  • Custom Modules:自定义模块
  • Connection Plugins:连接插件,用于与被管控主机之间基于SSH建立连接关系
  • Plugins:其他插件,包括记录日志等

运维Ansible自动化工具概述_记录日志_02

ansible的特性

  • 模块化:调用特定的模块,完成特定任务
  • 基于python语言实现,由Paramiko(完成基于ssh的连接),PyYAML(对YAML文件的支持),jinja2(python的模板库)三个关键的模块
  • 部署简单:是没有客户端的
  • 支持自定义模块,使用任意编程语言
  • 支持强大的playbook
  • 具有幂等性:一个操作在一个主机上执行一遍和执行N遍的结果是一样的

ansible的执行流程

运维Ansible自动化工具概述_记录日志_03


1) 加载配置文件,默认/etc/ansible/ansible.cfg

2) 查找对应主机的配置文件,找到要执行的主机和组

3) 加载自己对应的模块文件,如command

4)通过ansible将模块或者命令生成对应的临时py文件,并将该文件传输到远程服务器

5) 对应执行用户家目录的.ansible/tmp/xxx/xxx.py文件

6) 给文件加执行权限

7)执行并返回结果

8)删除临时的py文件,sleep0 退出。


举报

相关推荐

0 条评论