阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

自动化运维之Ansible服务部署详述

508次阅读
没有评论

共计 3338 个字符,预计需要花费 9 分钟才能阅读完成。

一、概述分析

由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下。这时,部署自动化运维就可以尽可能安全、高效地完成这些工作。
一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的 ABem 程序来完成管理功能,如:Puppet、Func、Zabbix 等;另外一类是不需要配置代理工具的,可以直接基于 SSH 服务来完成管理功能,如:Ansible、Fabric 等。

下面介绍几款功能类似的自动化运维工具:

1. Puppet

Pup 基于 Rpy 开发,支持 Linx、UNDX、Windows 平台,可以针对用户、系统服务配置文件、软件包等进行管理,有很强的扩展性,但远程执行命令相对较弱。

2. SaltStack

CallStack 基于 Python 开发,允许管理员对多个操作系统创建统一的管理系统,比 pet 更轻量级

工具 开发语言 结构 配置文件 格式 运行任务
Ansible Python YAML 支持命令行
SaltStack Python C/S YAML 支持命令行
Puppet Ruby C/S Ruby 语法格式 通过模块实现

Ansible
Ansible 基于 Python 开发,集合了众多优秀运维工具的优点,实现了批量运行命令部署程序、配置系统等功能。默认通过 SSH 协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台主机并行管理,使得管理主机更加便捷。

    官方的 title 是“Ansible is Simple IT Automation”——简单的自动化 IT 工具。

Ansible 通过 SSH 协议实现远程节点和管理节点之间的通信。理论上说,只要管理员通过 ssh 登录到一台远程主机上能做的操作,Ansible 都可以做到。

Ansible 跟其他 IT 自动化技术的区别在于其关注点并非配置管理、应用部署或 IT 流程工作流,而是提供一个统一的界面来协调所有的 IT 自动化功能,因此 Ansible 的系统更加易用,部署更快。
Ansible 可以让用户避免编写脚本或代码来管理应用,同时还能搭建工作流实现 IT 任务的自动化执行。IT 自动化可以降低技术门槛及对传统 IT 的依赖,从而加快项目的交付速度。

自动化运维之 Ansible 服务部署详述

Ansible 基本架构由六个部分组成:

Ansible core 核心引擎
Host inventory 主机清单:用来定义 Ansible 所管理的主机,默认是在 Ansible 的 host 配置文件中定义被管理主机,同时也支持自定义动态主机清单和指定其他配置文件的位置。
Connection plugins 连接插件:负责和被管理主机实现通信。除支持使用 ssh 连接被管理主机外,Ansible 还支持其他的连接方式,所以需要有连接插件将各个主机用连接插件连接到 Ansible。
Playbooks(yaml,injaz2) 剧本:用来集中定义 Ansible 任务的配置文件,即将多个任务定义在一个剧本中由 Ansible 自动执行,可以由控制主机针对多台被管理主机同时运行多个任务。
Core modules 核心模块:是 Ansible 自带的模块,使用这些模块将资源分发到被管理主机,使其执行特定任务或匹配特定的状态。
Custom modules 自定义模块:用于完成模块功能的补充,可借助相关插件完成记录日志、发送邮件等功能。

ansible 功能特性

  • 应用代码自动化部署
  • 系统管理配置自动化
  • 支持持续交付自动化
  • 支持云计算,大数据平台环境
  • 轻量级,无序在客户端安装 agent,更新时只需在控制机上进行更行即可
  • 批量任务执行可以写成脚本,不用分发到远程就可以执行
  • 支持非 root 用户管理操作,支持 sudo
  • 使用 python 编写,维护更简单

二、Ansible 安装

Ansible 自动化运维环境由控制主机与被管理主机组成,由于 Ansible 是基于 SSH 协议进行通信的,所以控制主机安装 Ansible 软件后不需要重启或运行任何程序,被管理主机也不需要安装和运行任何代理程序。

实验安装环境:

角色 主机名 IP 地址 组名
控制主机 01 192.168.100.129  
被管理主机 02 192.168.100.128 webserver
被管理主机 03 192.168.100.130 mysql

三台主机关闭防火墙:

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

安装步骤:

控制主机安装 ansible 并生成密钥对批量发送给被管理主机

1.yum 安装环境包与 ansible:

yum install epel-release -y
yum install ansible –y

2. 查看 ansible 版本

[root@01 ~]# ansible  --version

自动化运维之 Ansible 服务部署详述

3.yum 安装完成后会生成 3 个文件

[root@01 ~]# cd /etc/ansible/
[root@01 ansible]# ls

自动化运维之 Ansible 服务部署详述

4. 配置被管理端主机 IP 清单

[root@01 ansible]# vim /etc/ansible/hosts                     // 配置主机清单

自动化运维之 Ansible 服务部署详述

5. 虽然 ansible 的配置文件已经设置完成被管理端的 IP 地址,但是因为 ansible 是基于 ssh 协议,所以还需要配置密钥对验证

[root@01 ~]# ssh-keygen -t rsa           // 生成密钥对

自动化运维之 Ansible 服务部署详述
自动化运维之 Ansible 服务部署详述

6.ssh 协议免交互代理

[root@01 ~]# ssh-agent bash
[root@01 ~]# ssh-add

自动化运维之 Ansible 服务部署详述

shell 脚本批量发送公钥

(1). 下载安装 expect

[root@01 .ssh]# yum install expect -y                   //yum 安装 expect

(2). ping 通所有可互通的主机

[root@01 .ssh]# ansible all -m ping       // 使用 ansible 中的 ping 模块

自动化运维之 Ansible 服务部署详述

ansible 是基于 SSH 协议,所以可以 ping 通的主机储存在.ssh/known_hosts 的文件当中。当然就算不 ping 通也可以用 shell 脚本实现批量推送公钥。

在最新版本 ansible 2.7.0 中,在没有推送公钥形成密钥对的情况下,无法使用 ping 模块 ping 通的情况下,很难用 authorized_key 模块去推送公钥的。所以我更改了下 shell 脚本,这样就可以在无法用 ping 模块 ping 通的情况下直接实现批量推送公钥形成密钥对。

[root@01 ~]# cd ~/.ssh/
[root@01 .ssh]# ls
id_rsa  id_rsa.pub  known_hosts
[root@01 .ssh]# vim known_hosts                   // 查看下已经记录在 SSH 协议的主机,不做任何修改操作

自动化运维之 Ansible 服务部署详述

(2). 编写 shell 脚本实现批量推送公钥

[root@01 .ssh]# vim ~/.ssh/pushssh.sh 

脚本如下:

#!/bin/sh
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
host1=`cat /etc/ansible/hosts | awk -F ""'{print $1}'| grep'^192'`
#在生产情况中,有很多种获得 IP 的方法,本脚本最重要的就是获得 IP 地址,脚本只是提供一个思路。for i in $host1;

do

command1="scp ~/.ssh/authorized_keys root@$i:~/.ssh/authorized_keys"

password="123123" 

/usr/bin/expect -c "
        spawn ssh-copy-id root@$i 
        expect {\"*password\" { send \"$password\r\"; exp_continue}
        }     
expect eof"

done

#编写脚本完成后保存退出

[root@01 .ssh]# sh pushssh.sh        // 执行脚本

PS: 想要执行这个脚本,首先需要下载安装 expect,同时被管理端主机的密码需要是一致的。

———————- 验证 ——————-

查看下脚本是否执行成功:

自动化运维之 Ansible 服务部署详述
自动化运维之 Ansible 服务部署详述

此时就可以进行 ansible 批量部署操作

[root@01 ~]# ansible all -m command -a 'date'

自动化运维之 Ansible 服务部署详述

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3338字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7976391
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...