Ansible-基本概述
为什么要自动化运维
纯手动软件安装部署方式
我们以 10 台机器部署 Nginx 为例。部署步骤如下:
1、通过 ssh 登录一台机器;
2、yum install -y nginx 或者 获取安装包自行编译安装;
3、配置 Nginx
4、启动 Nginx ,如有必要加入开机自启动;
5、退出登录
上面步骤重复 10 次,即可完成我们的部署要求。
痛点:
1、重复操作频繁,增加了人工成本和后续维护成本;
2、机器太多时,容易落下某些机器且未操作,进而产生后续影响;
3、人工频繁操作时可能有操作步骤不完整的情况,造成该机器和其他机器状态不一致。
自动化运维软件安装部署方式
我们还是以 10 台机器部署 Nginx 为例。部署步骤如下:
1、在控制机或者称为管理机的机器上写好相关脚本。「当然该脚本我们是测试通过的,脚本中包括安装、配置、启动等等」
2、将写好的脚本从控制机推送到受控机;
3、在受控机执行相关脚本,根据脚本部署我们需要的 Nginx。
好处
1、减少了重复操作,提高了工作效率;
2、减小了出错几率,提高了准确率;
3、所有机器状态一致,降低了后续维护成本。
自动化运维使用场景
软件安装部署
配置同步
代码变更
命令执行
任务执行
Ansible 介绍
Ansible是什么
Ansible 是基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能的自动化管理工具。
Ansible 是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是 Ansible 所运行的模块,Ansible 只是提供一种框架。进而能减少我们的重复操作,提高工作效率。
Ansible 不需要在远程主机上安装 client/agents,因为它们是基于 SSH 来和远程主机通讯的。
Ansible 目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。
有哪些功能
1、批量执行远程命令:可以对 N 台主机同时进行命令的执行;
2、批量配置软件服务:可以用自动化的方式管理配置和服务;
3、实现软件开发功能:例如 jumpserver 底层使用 Ansible 来实现自动化管理;
4、编排高级的 IT 任务:Ansible 的 Playbooks 是一门编程语言,可以用来描绘一套 IT 架构。
Ansible 特点
1、部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作;
2、安全可靠,默认使用 SSH 协议对被控端进行管理;
3、有大量的常规运维操作模块,可实现日常绝大部分操作;
4、配置简单、功能强大、扩展性强;
5、支持 API 及自定义模块,可通过 Python 轻松扩展;
6、通过 Playbooks 来定制强大的配置、状态管理;
7、轻量级,无需在客户端安装 Agent,更新时只需在操作机上进行一次更新即可。
Ansible 架构
模块说明如下:
Ansible:Ansible 核心程序。
Host Inventory:记录由 Ansible 管理的主机信息清单,包括端口、密码、IP 等。
Playbooks:“剧本” YAML 格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
Core Modules:核心模块,主要操作是通过调用核心模块来完成管理任务。
Custom Modules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
Connection Plugins:连接插件,Ansible 和 Host 通信使用
Ansible 任务执行
Ansible 任务执行模式
Ansible 控制主机对被管节点的操作方式可分为两类,即 ad-hoc 和 playbook:
ad-hoc 模式(点对点模式)
使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于 bash 中的一句 shell。
playbook 模式(剧本模式)
是 Ansible 主要管理方式,也是 Ansible 功能强大的关键所在。playbook 通过多个 tasks 集合完成一类功能,如 Web 服务的安装部署、数据库服务器的批量备份等。可以简单地把 playbook 理解为通过组合多条 ad-hoc 操作的配置文件。
Ansible 执行流程
简单理解就是:Ansible 在运行时,首先读取 ansible.cfg 中的配置,根据规则获取 Inventory 中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。
Ansible 命令执行过程
1、加载自己的配置文件,默认 /etc/ansible/ansible.cfg;
2、查找对应的主机配置文件,找到要执行的主机或者组;
3、加载自己对应的模块文件,如 command;
4、通过 Ansible 将模块或命令生成对应的临时py文件(python脚本),并将该文件传输至远程服务器;
5、对应执行用户的家目录的 .ansible/tmp/XXX/XXX.PY文件;
6、给文件 +x 执行权限;
7、执行并返回结果;
8、删除临时py文件,sleep 0退出;
———END———
如果觉得不错就关注下呗(-^O^-) !
Ansible-基本概述的更多相关文章
- Ansible基础概述
一.Ansible简介 Ansible基于Python语言实现,由paramiko和PyYAML两个关键模块构建.Ansible的编排引擎可以出色地完成配置管理,流程控制,资源部署等多方面工作.Ans ...
- Ansible自动化配置详解
第1章 Ansible基本概述 1.1 ansible是一个配置管理系统configuration management system, 你只需要可以使用ssh访问你的服务器或设备就行. 1.安装软件 ...
- 1.Ansible自动化管理工具
1.Ansible基本概述 Ansible是一个IT自动化的配置管理工具,自动化主要体现在Ansible集成了丰富模块,丰富的功能组件, 可以通过一个命令行完成一系列的操作.进而能减少我们重复性的工作 ...
- 自动化运维工具-Ansible基础及Ansible Ad-Hoc
第58章 Ansible 目录 第58章 Ansible 一.Ansible基础概述 1.1)什么是Ansible 1.2)Ansible可以完成哪些功能呢?1.3)Ansible特点 1.4)Ans ...
- ansible批量部署(一)
自动化运维工具shell脚本/Ansible(无客户端)/Saltstack(master-minion) 回顾服务器部署的流程:买云主机->环境部署->软件部署->配置部署-> ...
- Ansible playbook Vault 加密
Ansible playbook Vault 加密详解与使用案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务 ...
- 自动化运维工具-Ansible之1-基础
自动化运维工具-Ansible之1-基础 目录 自动化运维工具-Ansible之1-基础 Ansible 基本概述 定义 特点 架构 工作原理 任务执行模式 命令执行过程 Ansible 安装 Ans ...
- ansible jinja2模板概述
目录 ansible jinja2模板概述 ansible jinja2模板使用 基本语法 jinja2模板逻辑判断 ansible jinja2管理nginx ansible jinja2管理kee ...
- 五十五.ansible概述、ansible基础 、ad-hoc、批量配置管理
1.环境准备 (自动化工具,批量操作) 6台 2cpu,1.5G以上内存,20G硬盘,1网卡 1.1 基础环境准备 1)启动6台虚拟机,ansible.sh 2)真机配置yum仓库 ]# tar ...
- 奔跑吧ansible笔记一(概述)
1.普通用户想使用sudo到root用户下执行一些有root权限的操作需要在被管理机器上做如下操作 1.切换到root用户下,怎么切换就不用说了吧,不会的自己百度去. 2.添加sudo文件的写权限,命 ...
随机推荐
- 引力波的绘制(python)
import numpy as np import matplotlib.pyplot as plt from scipy.io import wavfile rate_h,hstrain = wav ...
- Mybatis+Druid多数据源配置
在日常开发中我们可能会用到多数据源开发,什么是多数据源? 简单来讲的话,就是一个项目连接多个数据库.当然只是可能会用到,我暂时没见过应用场景,但是还是了解学习一下 此项目可以基于上一个简单集成项目进行 ...
- 基于Redis的Service缓存实现
项目中有使用到缓存,每次需要将缓存代码和业务代码杂糅在一起,以及分散各处的key,严重影响代码的可读性.以下是使用AOP对其简单尝试.直接上代码: 1.定义缓存注解: @Target(ElementT ...
- 吴裕雄--天生自然python Google深度学习框架:人工智能、深度学习与机器学习相互关系介绍
- struts.xml中namespace的配置之浏览器兼容性
还是做练习项目的时候发现一个问题: <span style="font-size:14px;"><package name="default" ...
- HTML常用数据类型
.数学函数: Math.ceil():天花板数 //大于当前小数的最小整数 Math.floor():地板数 //小于当前小数的最大整数 Math.round():四舍五入取整数 Math.rando ...
- 堆优DIJ模板
Dij:贪心思想的单源最短路,时间复杂度O(n^2). Dij算法流程: d数组记录源点s到每个点的距离,若无边则设为inf,标记源点: 选出d数组中未标记的最小值,该节点记为k,并标记k为已求出最短 ...
- Session深入浅出
Session会在浏览器关闭后消失吗? 通常情况下,当我们关闭浏览器再重新打开后,我们就需要再次进行登陆(如果没有进行下次自动登录之类的设置).在Jav中(Session是通用的,这里以Java为例) ...
- Java使用JNDI技术获取DataSource对象
package common; import java.sql.Connection; import java.sql.SQLException; import javax.naming.Contex ...
- QT "debugger unknow type"问题解决办法
windows上使用qt编译有两种,一种是vs的编译器,一种是MinGW的. 这种问题主要是发生在选择了MSVC2013编译器的版本,这个版本的qt需要再装一个调试器,而MinGW不用. 解决办法:下 ...