阅读 155

运维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的软件结构:
在这里插入图片描述

  • Host Inventory:主机清单,也就是被管理的主机列表

  • Playbooks:ansible的剧本,可想象为将多个任务放置在一起,一块执行

  • Core Modules:ansible的核心模块

  • Custom Modules:自定义模块

  • Connection Plugins:连接插件,用于与被管控主机之间基于SSH建立连接关系

  • Plugins:其他插件,包括记录日志等

在这里插入图片描述

ansible的特性

  • 模块化:调用特定的模块,完成特定任务

  • 基于python语言实现,由Paramiko(完成基于ssh的连接),PyYAML(对YAML文件的支持),jinja2(python的模板库)三个关键的模块

  • 部署简单:是没有客户端的

  • 支持自定义模块,使用任意编程语言

  • 支持强大的playbook

  • 具有幂等性:一个操作在一个主机上执行一遍和执行N遍的结果是一样的

ansible的执行流程

在这里插入图片描述
1) 加载配置文件,默认/etc/ansible/ansible.cfg
2) 查找对应主机的配置文件,找到要执行的主机和组
3) 加载自己对应的模块文件,如command
4)通过ansible将模块或者命令生成对应的临时py文件,并将该文件传输到远程服务器
5) 对应执行用户家目录的.ansible/tmp/xxx/xxx.py文件
6) 给文件加执行权限
7)执行并返回结果
8)删除临时的py文件,sleep0 退出。


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐