Ansible 在“Linux 服务器管理”课程前序任务批量部署的应用研究

2023-12-22 06:48赵春平苗志锋
装备制造技术 2023年10期
关键词:配置文件批量光盘

赵春平,苗志锋

(广西水利电力职业技术学院,广西 南宁 530023)

0 引言

随着我国进入数字经济时代,各高校普遍增设云计算技术、大数据技术等新兴专业,培养符合产业数字化转型升级需要的高素质技术技能型人才。而Linux 作为云计算平台的基石底座,拓展了虚拟化和容器化的计算生态。根据智联招聘、Boss 直聘等网站数据,云计算和大数据的相关技术技能岗位群中,掌握“Linux 服务器管理和运维”成为一种重要职业技能和任职要求。

高职信息类专业中,“Linux 服务器管理与运维”课程面向服务器领域的多任务场景,如:系统安装和服务进程管理、服务器部署管理等。为使学习者聚焦任务实施本身,教师需要为每台主机的每个场景任务提前配置必要的一致性实训基础环境。但Ansible 框架更常用于生产环境的自动化部署。对于高职实训环境的批量自动部署还存在不适应的地方,主要表现在:生产环境部署好后会持续运行,但实训环境在课后会重置,对于多场景的任务普遍依赖的通用前序任务友好度差和一致性差。学习者重复手动设置,耗时又缺乏成就感,且挤占了课堂宝贵的核心任务时间。因此,迫切需要提供一种批量自动化的部署方式,协助教师根据每次任务场景需要在课前统一推送设置部署。

1 技术发展现状

随着阿里云等国内公有云计算平台的兴起,国内外针对自动化批量部署的研究和探索成果日益增多。中国移动通信集团信息技术中心的孙翠锋面向电信云平台资源池优化,提出基于节点度量和多维参数估计的云环境下云平台虚拟机批量部署算法,优化了部署模型,提高了云环境下云平台虚拟机动态寻优、批量转发转换和自适应控制能力[1],为实训室内批量部署提供了虚拟化思路。黄巨涛等[2]针对电力行业信息系统在数据库和中间件国产化后的运维需求,提出了一种基于Ansible 工具设计电力云平台的自动化部署系统,改善了大文件传输的效率。隋利锋等[3]针对某地市商业银行的生产环境中服务器运维场景,提出了运用Ansible 框架,实现Linux 服务器运维任务标准化、模版化和自动化的实践探索。李湘林等[4]针对各大公司企业对网页web 框架的批量新增需求,设计了一种基于Ansible 自动化运维系统批量部署LAMP 架构,实现集中控制服务器,运用了智能运维思路来建设维护云中心的体系以满足很多企业在LAMP 部署上的发展需要。

通过现状研究分析可以得出:(1)云平台服务提供商在云服务的资源虚拟化配置模型和部署算法上进行研究和改进;(2)电信、银行等生产环境信息化程度高、部署运维压力大的企业是批量自动部署研究和实践的先行者,在产品选型、部署研究上提供了良好的、可借鉴的实践方法;(3)批量部署的主要为不同应用需要的Linux 的服务器,辅助部分VRP 的网络设备,个性定制性强。但针对职业院校实训教学场景的批量部署研究较少,面向虚拟机的LInux 服务器客户端实训主机的批量部署研究较少。

2 部署框架Ansible 核心原理和关键技术

在“Linux 服务器管理”课程的实践教学环境中,主要是面向实训环境中的多主机提供一种批量的自动化部署,从而实现主机基础环境和前序任务的一致性。部署框架Ansible 是企业IT 平台的自动化部署和运维平台和工具中的主流选项,它基于Python 开发,采用无侵入方式,提供了一种集成IT 系统的多节点配置管理、远程执行特定任务的应用部署功能。无侵入式部署能够简化运维中的配置管理与流程控制方式,利用推送方式对受控的客户系统加以配置,几乎所有配置工作都可在主服务器端完成[4]。用户可以通过调用内置module 来执行任务和批量部署。它的主要组件如下,框架结构见图1。

图1 Ansible 结构

(1)通信连接插件connection plugins:负责Ansible 主控主机和受控端主机信。Ansible 与Windows 通信通过powershell 和winrm 远程管理服务,与其他系统一般则采用ssh 服务协议。

(2)受控主机清单host inventory:指定操作的主机或主机集合。默认在/etc/ansible/hosts 配置文件里面定义监控的主机范围。

(3)各种功能模块modules,模块是具体负责任务的执行单元。除通信、调度、日志等核心模块外,可以调用command 模块,如可以在受控主机上执行shell命令,复制上传文件,安装软件等配置任务;可以通过Python 来实训自定义功能模块完成扩展任务。

(4)ad-hoc 执行模式,任务执行只用到单个模块,无论单台执行还是多台批量执行,都可以称为ad-hoc 模式,相当于在受控主机的bash 中的一条shell 命令。如果任务关联用到多个模块,可使用playbook 剧本模式。

(5)playbook 剧本模式,是Ansible 主要管理方式,也是Ansible 功能强大的关键所在。playbook 通过YAML 语言任务脚本配置文件,设置受控主机清单,连接登录方式,在tasks 区块部分将多个task 集合完成一类功能,来调度相应的module 实现具体运维任务。如Web 服务的安装部署、数据库服务器的批量备份等。基本等价于通过组合多条ad-hoc 操作实现的批量处理的配置文件。

3 基于Ansible 的实训基础环境部署方案

3.1 实训室初始状态设定

以某高职信息技术实训基地云计算基础实训室为例,机房主机数量为50 台学生用主机和1 台教师机。安装方式为在Window 宿主机的VMWare 虚拟机上安装CentOS7 Linux 服务器操作系统。其中windows 主机称为宿主机,虚拟机中的Linux 服务器称为客户机或受控端主机。教师机的Linux 客户机作为Ansible 主控端。

Linux 应用软件安装方式,优先连接本地软件源仓库,在虚拟机本地搭建光盘软件源仓库的方式进行。一般不采用直接在线方式,一是官方镜像默认在国(境)外,上游速率低耗时长;二是实训室所有主机同时访问安装对校园网出口带宽压力极大。

假设本实训室网络地址段为:192.168.18.0/23。其中,windows 宿主机统一静态配置192.168.18.0/23 的地址范围,网关为192.168.18.1/23。Linux 客户机需要设置2 块网卡,其中一块需为“host-only”模式,基于vmnet8 虚拟网卡,与Windows 宿主机实现一对一通信,地址范围可以设置为192.168.110.X/24。windows宿主机可以通过SSH 客户端远程管理和配置服务器。第二块网卡要选择“Bridge”桥接模式,并复制宿主机物理网卡的状态选项。IP 地址范围与宿主机相同。使得Ansible 主机端能直接与受控主机通信,将指令和配置文件、脚本等发送到受控端执行。为方便区别和快速采集受控主机地址集合,选取192.168.19.0/23 网段作为受控地址范围,进行手工设置地址。具体主机参数和地址配置见表1。

表1 主机参数和IP 地址配置

3.2 基于Ansible部署任务场景的思路

Ansible 框架平台,针对受控主机操作任务的自动化部署,遵循如下步骤实现操作转换。

(1)任务场景识别。结合课程实践教学任务,梳理归纳各场景的模块任务和基础通用任务。如为受控端主机统一配置光盘镜像软件仓库,为受控端主机的增加用户和设置权限;批量发送特定配置文件给受控端主机等。

(2)过程分解序化。记录整理某个场景任务或通用基础任务,以通用任务——为受控端主机统一配置光盘镜像软件仓库为例,在受控主机端本地shell 完成任务后,记录所有操作步骤,形成初步的操作流程和可执行脚本。

(3)操作抽象程序化。对单机具体可行的操作脚本,提炼通用型、基础型操作,形成原子操作,引入变量,形成可执行的程序化描述。同样以软件源仓库为例,主要可以包括目录创建、文件复制、设备挂载、配置修改、缓存更新等原子操作。

(4)模块化自动化。结合上述步骤中的各原子操作,对应Ansible 框架中的内置模功能模块,如shell(执行命令)、copy(复制文件)、mount(挂载设备)等。用yaml 配置文件创建playbook 剧本,列入受控主机清单,有序组合各功能模块形成tasks 任务序列,在受控主机上批量执行。Ansible 自动部署流程见图2。

图2 Ansible自动部署流程示意图

3.3 与受控主机建立无密登录互信关系

Ansible 作为主控端,需要通过SSH 协议与受控主机(集合)进行通信连接。需要在配置文件中设置的用户名和密码。在实训环节中,所有受控端主机集合的用户名和密码是统一,可以在Ansible 配置文件中统一设置受控端主机(集合)的SSH 远程登录名和密码。设置代码如下:

为增强通信连接的安全性,为Ansible 通信设置无密互信登录。无密互信通信原理,在主控端为ssh生成RSA 算法的公钥、私钥的秘钥把文件保存在root用户主目录下。用私钥加密的通信协议数据,可以用成对的公钥解密。因此需要在主控端将自己的公钥分发到各受控主机上。

主要步骤为:(1)在Ansible 主控端生成RSA 秘钥对;(2)配置受控主机集合,设置SSH 登录用户名和密码;(3)利用authorized_key 模块进行分发。在密码登录配置的基础上,编写playbook 剧本模式,实现分发的批量操作。剧本内容如下:

3.4 统一部署软件仓库配置

在CentOS7 中,采用yum 软件包管理器对应用软件和工具库进行安装、卸载、升级等管理。yum 安装时需要从配置启用的“软件源仓库”中拉取软件包、依赖包进行安装。软件源仓库既包括在线的网络源仓库,又可以基于光盘镜像构建本地软件源仓库。

3.4.1 在客户机本地配置yum 仓库步骤分解

虚拟机默认连接本地CentOS-DVD.iso 光盘镜像文件。基于该iso 文件构建本地软件源仓库的核心配置原理为:将软件源仓库配置文件的baseurl 参数设置指向到本地光盘镜像路径,再有yum 包管理器生成元数据索引,供yum 在安装、查询、升级和卸载操作中应用。

任务实施可以包括光盘挂载、配置修改、元数据生成等三大步骤:

(1)光盘挂载。在Linux 中,设备被看作文件进行读写处理。光盘镜像文件要先挂载映射到目录下,可能被Linux 文件系统识别读取。因此,在约定的便存储外设挂载目录/media 下创建挂载点目录。将光盘设备文件/dev/sr0 挂载到挂载点目录文件路径上,通过挂载点读取设备文件内容。挂载点命名要求规范,即/media/CentOS,与样本配置文件中的baseurl 设定保持一致,减少后续配置中出错的概率。

(2)配置软件源仓库。CentOS7 的yum 软件仓库配置目录为/etc/yum.repos.d/,包含有网络安装、本地安装等多种配置文件,对本地光盘镜像软件仓库设置形成干扰。建议将其全部移除备份到其他目录,如主目录,只保留CentOS-Media.repo 配置文件,清理不存在的baseurl 路径,确保[c7-media]仓库是处于激活状态。同样,可以在Ansible 主控端保留正确模版文件,通过复制模块将其推送分发给受控主机集合。

(3)重新生成元数据索引。当仓库配置文件变更后,原有的元数据索引文件失效,存在不一致。可通过yum 对原仓库索引的缓存进行全部清理重构,激活加载新的软件源仓库。

全部步骤完成,具体命令操作如下:

3.4.2 转化并编制Playbook 剧本

对应本地的光盘挂载、配置修改、元数据生成的主要步骤,选取对应的Ansible 中功能模块进行转化和序化。

(1)生成挂载点。需要在受控主机上创建目录,选用shell 模块执行命令。语法原型为:Ansible host1 -m shell -a 'mkdir -p/media/CentOS'。其中,host1 为受控主机名或集合名。剧本模式中,结合name 和shell组合使用。

(2)挂载设备到挂载点。选用mount 功能模块,远程在受控端执行,将/dev/sr0 挂载到/media/CentOS目录。

(3)清空仓库配置目录。选用shell 模块执行mv命令。

(4)分发配置模版。除通过shell 模块在各受控端主机一一修改配置文件外,更便捷的方式,是在Ansible 主控端准备一份已修改好的配置模块文件,直接负责分发。采用copy 模块来将源配置文件,统一发送到受控主机上指定目录下。

(5)更新元数据索引。选用shell 模块执行yum 组合命令。或可以选用yum_repository 模块,直接在线设置软件源仓库配置。

(6)列出受控主机集合。修改/etc/Ansible/hosts 文件。

本任务的playbook 剧本文件主要内容如下:

5 结语

通过在Linux 课程实践教学中,引入Ansible 自动部署框架,在课前为各任务场景批量执行命令、统一分发配置文件等,减少了学习者枯燥重复操作准备环节,为每台主机配置有相同的条件和一致性的环境,使得学习者聚集到教学重点和难点,批量统一部署可以推广应用到实践考核基础环境准备。兼顾了实训管理员的初始实训环境和教师的场景任务基础环境的布置。同样对于其他基于Linux 服务器的课程具有一定的借鉴意义。但如何将其用于其他系统,尤其是苹果实训机房的主机批量部署,目前还缺乏深入的研究,需要在后续研究计划中进行实践和研究。

猜你喜欢
配置文件批量光盘
提示用户配置文件错误 这样解决
光盘行动
批量提交在配置分发中的应用
互不干涉混用Chromium Edge
忘记ESXi主机root密码怎么办
光盘小熊
打印机设置
浅议高校网银批量代发
基于AUTOIT3和VBA的POWERPOINT操作题自动批量批改
考虑价差和再制造率的制造/再制造混合系统生产批量研究