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文件的写权限,命 ...
随机推荐
- Matlab高级教程_第二篇:一个简单的混编例子
1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...
- Cobbler_自动装系统
Cobbler —自动装系统的操作步骤 Cobbler是一款自动化操作系统安装的实现,与PXE安装系统的区别就是可以同时部署多个版本的系统,而PXE只能选择一种系统. Cobbler 的安装 # 在一 ...
- Fiddler发送post请求 出现503
- C++ const成员变量和成员函数(常成员函数)
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只 ...
- 陈天奇XGBoost文章解读(未完成)
这个是我下载的原文在看,然后结合一些网上的资料学习,先贴一个网上的资料. 终于有人说清楚了XGBoost算法 XGBoost阅读之Weighted quantile sketch XGBoost论文翻 ...
- 常用的mysql操作
总结一下常用的mysql操作,避免下次遇到类似情况重复地去百度. 方法不是唯一的,但记录一种可行的方法就可以了. 遇到新的问题再继续补充. 1.增加一个列 ALTER TABLE 表名 ADD COL ...
- isdigital()函数
函数说明: 主要用于检查其参数是否为十进制数字字符. 头文件: C——#include<ctype.h> C++——#include<cctype> 函数定义: int is ...
- highcharts 柱状图在柱子顶部显示y轴数据
var plotOptions={ column:{ //borderColor: "#CCCC66",//边框 shadow: true, //阴影 dataLabels:{ / ...
- css - inline-block 盒子下的内容文字错位问题
参考资料: “display:block-inline形式的Span或Div中添加文字后,导致Span或Div排版掉落.错位”的原因及解决方法: 正文: 场景:两个 div 排在一行上,各有固定宽高, ...
- 吴裕雄--python学习笔记:BeautifulSoup模块
import re import requests from bs4 import BeautifulSoup req_obj = requests.get('https://www.baidu.co ...