当前位置: 首页 > news >正文

ansible环境搭建

任务背景

公司的服务器越来越多, 维护⼀些简单的事情都会变得很繁琐。⽤ shell脚本来管理少量服务器效率还⾏, 服务器多了之后, shell脚本⽆ 法实现⾼效率运维。这种情况下,我们需要引⼊⾃动化运维⼯具, 对 多台服务器实现⾼效运维。

任务要求

通过管理服务器能够按照需求灵活⾼效地管理所有应⽤服务器的运维 操作

任务拆解

1, 需要⼀台服务器做管理端, 来连接管理所有的应⽤服务器

2, 考虑如果只针对⼀部分应⽤服务器进⾏运维操作如何实现(服务器 分组)

3, 学会将平台烂熟于⼼的linux操作命令转化为⾃动化运维的⽅式(常 ⻅模块的学习)

4, 如果操作⾮常的冗⻓, 学会使⽤playbook和role的⽅式来管理

学习⽬标

能够使⽤file模块做基本的⽂件操作

能够安装ansible服务器和客户端

能够定义ansible主机清单进⾏服务器分组

能够使⽤hostname模块修改主机名

⼀、认识⾃动化运维

问题:

假设我要去1000台服务上做⼀个操作(如nginx服务器修改配置⽂件 ⾥的某⼀个参数), 下⾯两种⽅法缺点明显:

1. 按传统的⽅法, ⼀台连着⼀台服务器的ssh上去⼿动操作。

缺点:

效率太低。

2. 写个shell脚本来做。

缺点:

管理的机器平台不⼀致,脚本可能不具备通⽤性。

传密码麻烦(在⾮免密登录的环境下, 需要expect来传密码)

效率较低,循环1000次也需要⼀个⼀个的完成,如果⽤ & 符 放到后台执⾏,则会产⽣1000个进程。

⾃动化运维: 将⽇常IT运维中⼤量的重复性⼯作,⼩到简单的⽇常检 查、配置变更和软件安装,⼤到整个变更流程的组织调度,由过去的 ⼿⼯执⾏转为⾃动化操作,从⽽减少乃⾄消除运维中的延迟,实现 “零延时”的IT运维。

⾃动化运维主要关注的⽅⾯

假如管理很多台服务器,主要关注以下⼏个⽅⾯:

1. 管理机与被管理机的连接(管理机如何将管理指令发送给被管理 机)

2. 服务器信息收集 (如果被管理的服务器有centos7.5外还有其它 linux发⾏版,如suse,ubuntu等。当你要做的事情在不同OS上有 所不同,你需要收集信息,并将其分开处理)

3. 服务器分组(因为有些时候我要做的事情不是针对所有服务器, 可能只针对某⼀个分组)

4. 管理内容的主要分类

⽂件⽬录管理(包括⽂件的创建,删除,修改,查看状态,远程拷⻉等)

⽤户和组管理

cron时间任务管理

yum源配置与通过yum管理软件包

服务管理

远程执⾏脚本

远程执⾏命令

常⻅的开源⾃动化运维⼯具⽐较

1. puppet(拓展)

基于ruby语⾔,成熟稳定。适合于⼤型架构,相对于ansible和 saltstack会复杂些。

2. saltstack(拓展)

基于python语⾔。相对简单,⼤并发能⼒⽐ansible要好, 需要维 护被管理端的服务。如果服务断开,连接就会出问题。

3. ansible

基于python语⾔。简单快捷,被管理端不需要启服务。直接⾛ ssh协议,需要验证所以机器多的话速度会较慢。

⼆、ansible

ansible是⼀种由Python开发的⾃动化运维⼯具,集合了众多运维⼯ 具(puppet、cfengine、chef、func、fabric)的优点,实现了批量 系统配置、批量程序部署、批量运⾏命令等功能。

特点:

部署简单

默认使⽤ssh进⾏管理,基于python⾥的paramiko模块开发

管理端和被管理端不需要启动服务

配置简单,功能强⼤,扩展性强

能过playbook(剧本)进⾏多个任务的编排

ansible环境搭建

实验准备: 三台机器,⼀台管理,两台被管理

1. 静态ip

2. 主机名及主机名互相绑定

3. 关闭防⽕墙, selinux

4. 时间同步

5. 确认和配置yum源(需要epel源)

实验过程:

第1步:

管理机上安装ansible,被管理节点必须打开ssh服务.

第2步: 实现master对agent的免密登录,只在master上做。(如果这 ⼀步不做,则在后⾯操作agent时都要加-k参数传密码;或者在主机清 单⾥传密码)

第3步: 在master上定义主机组,并测试连接性

服务器分组

ansible通过⼀个主机清单功能来实现服务器分组。

Ansible的默认主机清单配置⽂件为/etc/ansible/hosts.

示例:

示例: 定义10.1.1.12:2222这台服务器的别名为nginx1

示例: 利⽤别名来分组

⼩结:

主机清单的作⽤: 服务器分组。

主机清单的常⻅功能:

1. 可以通过IP范围来分, 主机名名字的范围来分

2. 如果ssh端⼝不是22的,可以传⼊新的端⼝。

3. 没有做免密登录,可以传密码。

ansible模块

ansible是基于模块⼯作的,本身没有批量部署的能⼒。真正具有批 量部署的是ansible所运⾏的模块,

ansible只是提供⼀种框架。 '参数'ansible⽀持的模块⾮常的多,我们并不需要把每个模块都记住,⽽ 只需要熟悉⼀些常⻅的模块,其它的模块在需要⽤到时再查询即可。

查看所有⽀持的模块

hostname模块

hostname模块⽤于修改主机名(注意: 它不能修改/etc/hosts⽂件) https://docs.ansible.com/ansible/latest/modules/hostname_modul e.html#hostname-module

将其中⼀远程机器主机名修改为agent1.cluster.com

file模块(重点)

file模块⽤于对⽂件相关的操作(创建, 删除, 软硬链接等) https://docs.ansible.com/ansible/latest/modules/file_module.html#f ile-module

创建⼀个⽬录

创建⼀个⽂件

递归修改owner,group,mode

删除⽬录(连同⽬录⾥的所有⽂件)

创建⽂件并指定owner,group,mode等

删除⽂件

创建软链接⽂件

创建硬链接⽂件

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 免费开源的AI绘画工具ComfyUI,让AI作画变得简单又快捷
  • EmguCV学习笔记 VB.Net和C# 下的OpenCv开发 C# 目录
  • 解决电脑突然断网没网,以太网无网络访问权限,本地连接时出错:地址仍未与网络终结点关联
  • 深入对比:Python pandas 与 Java Map 在数据处理中的应用
  • 其实你就学不会 Python
  • 算法日记day 42(动归之不相交的线|最大子数组和|判断子序列)
  • 机器学习——第十四章 概率图模型
  • 基于vllm部署大模型
  • <数据集>铝型材缺陷识别数据集<目标检测>
  • Comsol 宽频带超薄卷状超表面吸声器
  • 使用 Apache POI 的 DataFormatter 处理 Excel 数据
  • 《智能计算系统:从深度学习到大模型(第2版)》重磅上市!
  • 动态规划-打家劫舍、股票问题
  • Python——变量和字符串以及转义字符常见问题总结
  • 机器学习第十二章-计算学习理论
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [NodeJS] 关于Buffer
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【知识碎片】第三方登录弹窗效果
  • Intervention/image 图片处理扩展包的安装和使用
  • Java的Interrupt与线程中断
  • Linux中的硬链接与软链接
  • python学习笔记 - ThreadLocal
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 创建一种深思熟虑的文化
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 浅谈web中前端模板引擎的使用
  • 设计模式走一遍---观察者模式
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 算法系列——算法入门之递归分而治之思想的实现
  • 为视图添加丝滑的水波纹
  • 用Visual Studio开发以太坊智能合约
  • 运行时添加log4j2的appender
  • 阿里云移动端播放器高级功能介绍
  • 带你开发类似Pokemon Go的AR游戏
  • ​比特币大跌的 2 个原因
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #ifdef 的技巧用法
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #NOIP 2014# day.2 T2 寻找道路
  • (35)远程识别(又称无人机识别)(二)
  • (C#)一个最简单的链表类
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (k8s)Kubernetes本地存储接入
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (ZT)一个美国文科博士的YardLife
  • (层次遍历)104. 二叉树的最大深度
  • (二)springcloud实战之config配置中心
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm高校实验室 毕业设计 800008