CN115904419A - 一种基于自动化脚本安装应用软件的方法及装置 - Google Patents

一种基于自动化脚本安装应用软件的方法及装置 Download PDF

Info

Publication number
CN115904419A
CN115904419A CN202310198717.0A CN202310198717A CN115904419A CN 115904419 A CN115904419 A CN 115904419A CN 202310198717 A CN202310198717 A CN 202310198717A CN 115904419 A CN115904419 A CN 115904419A
Authority
CN
China
Prior art keywords
software
information
installation
server
deployed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310198717.0A
Other languages
English (en)
Other versions
CN115904419B (zh
Inventor
薛成龙
张金银
王乐珩
王翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Bizhi Technology Co ltd
Original Assignee
Hangzhou Bizhi Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Bizhi Technology Co ltd filed Critical Hangzhou Bizhi Technology Co ltd
Priority to CN202310198717.0A priority Critical patent/CN115904419B/zh
Publication of CN115904419A publication Critical patent/CN115904419A/zh
Application granted granted Critical
Publication of CN115904419B publication Critical patent/CN115904419B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种基于自动化脚本安装应用软件的方法及装置,所述方法包括以下步骤:S1.配置待部署软件的部署信息,所述部署信息包括软件基本属性信息和目标机器配置文件的模板信息;S2.获取所述待部署软件目标服务器信息;S3.基于所述待部署软件的基本属性信息和对应的服务器信息,为不同类型的系统软件配置对应的参数信息,所述参数信息包括主从IP地址、内存大小和CPU数量;并根据服务器信息渲染出待部署的软件配置元数据;S4.按照部署信息和所述的系统软件的参数信息,依次安装所述系统软件;S5.根据软件安装配置信息进行健康检查。本发明通过服务器配置文件、自动安装,降低人力成本,提高部署软件的效率。

Description

一种基于自动化脚本安装应用软件的方法及装置
技术领域
发明涉及计算机、网络通信技术及大数据处理领域,具体涉一种基于自动化脚本安装应用软件的方法及装置。
背景技术
目前,应用软件的部署,大多数都会是人工部署方式,逐个登录需要部署的物理服务器或虚拟环境的虚拟机上进行复杂的环境配置及应用软件安装;或采用脚本化方式,将代码和其他配置文件传输到目标应用程序服务器上的正确位置,并进行复杂的配置和设置。然后再执行安装脚本完成部署步骤。
现有的人工安装部署方式虽然可以满足各种应用的需求,受限于人工操作的局限性,无法根据不同环境、不同安全性的要求适用于不同环境的自动化部署方法,且存在部署效率低、出错率高、安全性低、就部署而言,对操作系统人员的技术水平要求存在高低不等的问题。
发明内容
针对现有技术存在的问题,本发明的目的在于将人工部署改进为自动化部署软件的方法或系统,通过服务器配置文件、自动安装,降低人力成本,提高部署软件的效率。
为实现上述目的,本发明提供一种基于自动化脚本安装应用软件的方法,其特征在于,所述方法包括以下步骤:
S1. 配置待部署软件的部署信息,所述部署信息包括软件基本属性信息和目标机器配置文件的模板信息;
S2. 获取所述待部署软件目标服务器信息;
S3. 基于所述待部署软件的基本属性信息和对应的服务器信息,为不同类型的系统软件配置对应的参数信息,所述参数信息包括主从IP地址、内存大小和CPU数量;并根据服务器信息渲染出待部署的软件配置元数据;
S4. 按照部署信息和所述的系统软件的参数信息,依次安装所述系统软件;
S5. 根据软件安装配置信息进行健康检查。
进一步,步骤S1中配置待部署软件的部署信息的实现方式如下:从 Docker HUB官方镜像仓库拉取所需要安装的原生软件镜像包至本地,之后将软件镜像包导出至simbastack-master/src 目录下,通过 tar czf simbastack-master.tar.gzsimbastack-master 命令将软件镜像包连同自动化部署工具打包并上传到 Linux 服务器中的 /opt 目录下,通过 tar zxf simbastack-master.tar.gz 命令将其解压,配置config/nodes.conf 软件安装配置文件,并按照该配置文件的配置规范说明配置所需要安装的软件。
进一步,具体配置参数包括软件版本号、安装类型、软件安装路径、运行用户和默认端口、安装目标机IP地址以及目标机器的登录账号及密码。
进一步,步骤S2中,获取所述待部署软件目标服务器信息的方式如下:通过 ssh-copy-id -i /root/.ssh/id_rsa.pub -p ${HOSR_PORT} ${HOST_USER}@${HOST_NAME} 命令将自动化部署工具所在机器的公钥传输到目标主机,实现SSH免密的打通,然后获取目标服务器的系统版本、CPU指令集架构、内存大小、数据盘挂载目录和数据盘大小,将获取的目标服务器的配置规格生成配置文件。
进一步,步骤S3中,根据S2获取到的服务器信息,为不同类型的系统软件配置对应的参数信息的方式如下:将 config/nodes.conf 安装配置文件中配置的内存大小与S2步骤中获取到的服务器信息进行对比,并根据实际目标机器的配置规格计算出合理的配置规格,然后再根据实际配置渲染出待部署的软件安装元数据信息。
进一步,待部署的软件安装元数据信息包括:内存使用大小、最低CPU数量使用个数,数据盘挂载点及安装目录,应用所需的资源计算过程包括以下步骤:
S301.计算安装软件所需的磁盘空间;
disk_space_consumed=`du -sh /tmp/$software_name awk'{print $1}'`;
S302.通过读取 /proc/net/dev 文件计算当前的网络带宽;
current_network_bandwidth=$(grep"$network_interface" /proc/net/dev awk -F'[: ]+''{print $10}');
S303.重新读取 /proc/net/dev 文件计算一秒后的网络带宽;
new_network_bandwidth=$(grep"$network_interface" /proc/net/dev awk -F'[: ]+''{print $10}');
S304.计算网络带宽的消耗情况以及计算安装软件所需的网络带宽;
network_bandwidth_consumed=0
network_bandwidth_consumed=$(($new_network_bandwidth - $current_network_bandwidth));
S305.读取待安装软件的配置文件,判断资源是否充足,若充足,则继续进行资源评估:当同时满足服务器的空闲内存大于应用软件所需的内存、服务器空闲内存大于应用软件所需的磁盘空间、服务器的网络速率大于应用软件所需的网络速率时,安装软件检查前置任务继续进行;当所有的条件不满足时,则回显给客户终端,条件不满足并列出不满足无法继续安装软件的原因;
S306.通过使用top命令计算出服务器的当前CPU使用率,再通过使用ps命令计算出服务器上运行的进程数量;判断当前CPU使用率和进程数量是否超过设定的阈值,若资源使用情况在阈值范围内,则继续执行应用软件安装;若超出进程数,则回显给客户终端,条件不满足并列出不满足无法继续安装软件的原因;若CPU过高则回显给客户终端,并终止软件安装。
进一步,步骤S4中,通过 sh /opt/simbastack-master/install.sh --elasticsearch 命令开始自动安装软件,具体自动化执行步骤如下:
执行如下命令将软件镜像包传输到目标机器的/tmp目录下:
scp /opt/simbastack-master/src/elasticsearch-latest.tar.gz $HOST_NAME:/tmp/
执行如下命令将软件安装脚本传输到目标机器/tmp/目录下:
scp /opt/simbastack-master/include/install_elasticsearch.sh $HOST_NAME:/tmp/
通过以下命令远程执行软件安装脚本:ssh -p${HOST_PORT} ${HOST_USER}@${HOST_PASSWORD} sh /tmp/install_elasticsearch.sh
安装过程包括:安装Docker环境、创建目录、导入软件镜像、创建 docker-compose-elasticsearch-standalone.yaml 编排文件 ,通过 docker load -i $HOST_NAME:/tmp/ elasticsearch-latest.tar.gz 命令将软件镜像导入到目标机的 docker中,之后运行 docker-compose -f /opt/startdt/elasticsearch-latest-standalone.yaml up -d 命令启动软件服务。
进一步,步骤S5中,安装完成后自动检测服务健康状态的方式如下:通过 dockerinspect –format'{{.State.Running}}'`docker ps --format"{{.Names}}"grep elasticsearch ` 命令检查目标机软件服务是否启动成功。
进一步,若检测启动失败,通过屏显方式告知执行用户失败原因。
进一步,若检测启动成功,将部署后的信息生成软件安装日志文件保存在目标机器的软件安装目录,并将安装信息打印在屏幕中,部署后的信息包括软件安装的账号、软件安装密码和软件监听端口信息。
另一方面,本发明提供一种基于自动化脚本安装应用软件的装置,所述装置用于实现根据本发明的基于自动化脚本安装应用软件的方法。
本发明通过自动化部署软件,减少了人工成本,并且,通过元数据和配置模板来自动生成软件配置,减少了人工配置的出错几率,根据配置文件一键渲染部署脚本及部署包,可根据用户配置文件一键部署多种应用软件架构的集群模式或单机模式,省去复杂的手动配置,部署一个应用软件无论是集群模式还是单机模式仅需几分钟便可完成。此外,本发明通过精确计算运行过程中的所需资源,根据实际目标机器的配置规格计算出合理的配置规格,实现资源的优化配置,提高运行效率。此外,本发明还设置了健康状态自动检测方法,能够对安装过程自动化检测是否成功,有效提高用户体验。
附图说明
图1示出了根据本发明实施例的基于自动化脚本安装应用软件的方法的流程图;
图2示出了根据本发明实施例的基于自动化脚本安装应用软件的方法中所需要服务器示例图。
具体实施方式
下面将结合附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合图1-图2对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本发明通过自动化部署软件,减少了人工成本,并且,通过元数据和配置模板来自动生成软件配置,减少了人工配置的出错几率。实施例可以只包括二进制文件和相对较小的配置文件及脚本,这样更轻量化,而不是文件和配置信息的集合。根据配置文件渲染出的配置信息,支持单机或集群部署方式。然后,部署人员可以根据环境要求,将所需要部署的应用软件信息填写到配置文件中,以将应用软件安装在代码支持的任何环境(例如,开发,测试或生产)中,然后,代码可以自动正确配置和部署应用软件。整个部署应用软件的过程无需人为参与。
如图1和图2所示,本发明实施例提供了一种基于自动化脚本安装应用软件的方法,包括以下步骤:
S1. 配置待部署软件的部署信息,所述部署信息包括软件基本属性信息和目标机器配置文件的模板信息;
S2. 获取所述待部署软件目标服务器信息;
S3. 基于所述待部署软件的基本属性信息和对应的服务器信息,为不同类型的系统软件配置对应的参数信息,所述参数信息包括主从IP地址、内存大小和CPU数量;并根据服务器信息渲染出待部署的软件配置元数据;
S4. 按照部署信息和所述的系统软件的参数信息,依次安装所述系统软件;
S5. 根据软件安装配置信息进行健康检查。
具体地,步骤S1中,配置待部署软件的部署信息的实现方式如下:从 Docker HUB官方镜像仓库拉取所需要安装的原生软件镜像包至本地,之后将软件镜像包导出至simbastack-master/src 目录下,通过 tar czf simbastack-master.tar.gzsimbastack-master 命令将软件镜像包连同自动化部署工具打包并上传到 Linux 服务器中的 /opt 目录下,通过 tar zxf simbastack-master.tar.gz 命令将其解压,配置config/nodes.conf 软件安装配置文件,并按照该配置文件的配置规范说明配置所需要安装的软件,包括软件版本号、安装类型、软件安装路径、运行用户和默认端口、安装目标机IP地址以及目标机器的登录账号及密码,所述软件安装配置文件格式如下所示:
ELASTICSEARCH_HOST=Elasticsearch安装目标机,示例:172.16.10.1
ELASTICSEARCH_VERSION=Elasticsearch版本号,示例:latest
ELASTICSEARCH_USER=Elasticsearch账号,示例:elastic
ELASTICSEARCH_PASSWORD=Elasticsearch密码,示例:xxxxxx
ELASTICSEARCH_JVM_XMSMEM=Elasticsearch最小JVM内存启动大小,示例:2G
ELASTICSEARCH_JVM_ XMXMEM=Elasticsearch最大JVM内存启动大小,示例:8G
ELASTICSEARCH_PORT=Elasticsearch服务端口,示例:9200
ELASTICSEARCH_INSTALL_TYPE=Elasticsearch安装模式,示例:cluster(集群版),示例:standalone(单机版)
ELASTICSEARCH_INSTALL_DIR=Elasticsearch安装目录,示例:/opt/startdt/elasticsearch-${ELASTICSEARCH_VERSION}
所述的目标机配置格式如下所示:
HOST_NAME=目标机器IP地址,示例:172.16.10.1
HOST_USER=目标机器SSH登录用户,示例:root
HOST_PASSWORD=目标机器SSH密码,示例:xxxxxx
HOSR_PORT=目标主机SSH端口,示例:22
步骤S2中,获取所述待部署软件目标服务器信息的方式如下:通过 ssh-copy-id-i /root/.ssh/id_rsa.pub -p ${HOSR_PORT} ${HOST_USER}@${HOST_NAME} 命令将自动化部署工具所在机器的公钥传输到目标主机,实现SSH免密的打通,然后获取目标服务器的系统版本、CPU指令集架构、内存大小、数据盘挂载目录,数据盘大小,将获取的目标服务器的配置规格生成配置文件。
步骤S3中,根据S2获取到的服务器信息,为不同类型的系统软件配置对应的参数信息的方式如下:将 config/nodes.conf 安装配置文件中配置的内存大小与S2步骤中获取到的服务器信息进行对比,并根据实际目标机器的配置规格计算出合理的配置规格,然后再根据实际配置渲染出等待部署的软件安装元数据信息,包括:内存使用大小、最低CPU数量使用个数,数据盘挂载点及安装目录,为待安装软件做好准备。应用所需的资源计算过程包括以下步骤:
S301.计算安装软件所需的磁盘空间
disk_space_consumed=`du -sh /tmp/$software_name awk'{print $1}'`
S302.通过读取 /proc/net/dev 文件计算当前的网络带宽
current_network_bandwidth=$(grep"$network_interface" /proc/net/dev awk -F'[: ]+''{print $10}')
S303.重新读取 /proc/net/dev 文件计算一秒后的网络带宽
new_network_bandwidth=$(grep"$network_interface" /proc/net/dev awk -F'[: ]+''{print $10}')
S304.计算网络带宽的消耗情况以及计算安装软件所需的网络带宽
network_bandwidth_consumed=0
network_bandwidth_consumed=$(($new_network_bandwidth - $current_network_bandwidth))
S305.通过以下代码读取待安装软件的配置文件,判断资源是否充足,如果充足,则继续进行资源评估:
while read line; do
    software_name=$(echo $line | awk '{print $1}')
    required_memory=$(echo $line | awk '{print $2}')
    required_disk=$(echo $line | awk '{print $3}')
    required_network=$(echo $line | awk '{print $4}')
   # 判断服务器资源内存、磁盘容量、网络情况是否充足
if [ $free_memory -gt $required_memory ] && [ $free_disk -gt $required_disk ] && [ $network_speed -gt $required_network ]; then
   # 当同时满足服务器的空闲内存大于应用软件所需的内存、服务器空闲内存大于应用软件所需的磁盘空间、服务器的网络速率大于应用软件所需的网络速率时,安装软件检查前置任务继续进行。
       # 获取服务器空闲内存
       free_memory=$((free_memory-required_memory))
       # 获取服务器空闲存储空间
       free_disk=$((free_disk-required_disk))
       # 获取服务器网络速率
       network_speed=$((network_speed-required_network))
   else
    # 当所有的条件不满足时,则回显给客户终端,条件不满足并列出不满足无法继续安装软件的原因。
   fi
   # 读取自定义的应用软件配置文件
 done < config/nodes.conf
S306.在此代码中,先通过使用top命令计算出服务器的当前CPU使用率,再通过使用ps命令计算出服务器上运行的进程数量。然后,我们检查这些数值是否超过特定的限制(在此示例中,限制是90%的CPU使用率和5000个进程),如果资源使用情况在限制内,则可以继续执行应用软件安装。
# 计算CPU使用率
cpu_usage=`top -bn1 awk'/Cpu\(s\):/ {print $2}'`
# 计算进程数
process_count=`ps -ef wc -l`
# 检查CPU使用率是否低于90%
if (( $(echo&quot;$cpu_usage<0.9&quot; bc -l) )); then
 echo&quot;CPU usage is below 90%. Continuing with softwareinstallation...&quot;
 # 检查进程数是否低于5000个限制
 if (( $process_count<5000 )); then
   # 进程数在可接受的限制之内,则继续软件安装
 else
   # 如果超出进程数,则回显给客户终端,条件不满足并列出不满足无法继续安装软件的原因。
 fi
else
 # 如果CPU过高则回显给客户终端,并终止软件安装。
Fi
并且,应用内存容量 = 应用程序占用内存 + 应用程序数据占用内存 + 其他应用程序占用内存;
其中:应用程序占用内存 = 应用程序的代码段、数据段和堆栈段的总容量;
应用程序数据占用内存 = 应用程序的全局数据段和静态数据段的总容量;
其他应用程序占用内存 = 第三方应用程序和动态链接库的总容量。本发明通过精确计算运行过程中的所需资源,根据实际目标机器的配置规格计算出合理的配置规格,实现资源的优化配置,提高运行效率。
如图2所示,为根据本发明实施例的基于自动化脚本安装应用软件的方法中所需要服务器示例图,其一个控制端可与多个工作节点对应,从而极大的提高资源的优化配置,提高运行效率。
步骤S4中,通过 sh /opt/simbastack-master/install.sh --elasticsearch 命令开始自动安装软件,具体自动化执行步骤如下:
执行如下命令将软件镜像包传输到目标机器的/tmp目录下:
scp /opt/simbastack-master/src/elasticsearch-latest.tar.gz $HOST_NAME:/tmp/
执行如下命令将软件安装脚本传输到目标机器/tmp/目录下:
scp /opt/simbastack-master/include/install_elasticsearch.sh $HOST_NAME:/tmp/
通过以下命令远程执行软件安装脚本:ssh -p${HOST_PORT} ${HOST_USER}@${HOST_PASSWORD} sh /tmp/install_elasticsearch.sh
安装过程包括:安装Docker环境、创建目录、导入软件镜像、创建 docker-compose-elasticsearch-standalone.yaml 编排文件 ,通过 docker load -i $HOST_NAME:/tmp/ elasticsearch-latest.tar.gz
命令将软件镜像导入到目标机的 docker 中,之后运行 docker-compose -f /opt/startdt/elasticsearch-latest-standalone.yaml up -d 命令启动软件服务。
步骤S5中,安装完成后自动检测服务健康状态,通过 docker inspect –format'{{.State.Running}}'`docker ps --format&quot;{{.Names}}&quot; grepelasticsearch ` 命令检查目标机软件服务是否启动成功,若失败会通过屏显方式告知执行用户失败原因,若成功会将部署后的信息,如软件安装的账号、软件安装密码、软件监听端口等信息生成软件安装日志文件保存在目标机器的软件安装目录,即:/opt/startdt/elasticsearch- latest/elasticsearch_install.log 并将安装信息打印在屏幕中。
应用健康检查项以及目标状态运行情况如下所示:
运行状况检查过程包括以下步骤:
S501.使用docker ps -q命令获取容器的ID;
S502.使用docker inspect命令检查容器的运行状态、端口运行状态、网络状态、CPU使用率、存储使用率和内存使用率;
S503.若容器的状态不是“running”,则输出“Error: Container is notrunning.”并退出脚本;若容器端口没有打开,则输出“Error: Container ports are notopen.”并退出脚本,若容器没有连接到网络,则输出“Error: Container network is notconnected.”并退出脚本;
S504.容器的CPU使用率高于设定的阀值(这里优选设为80%),则输出“Error:Container CPU usage is higher than threshold ($cpu_threshold%).&quot;并退出脚本;若容器的存储使用率高于设定的阀值(这里优选设为100 MB),则会输出“Error:Container storage usage is higher than threshold ($storage_threshold bytes).&quot;并退出脚本;若容器的内存使用率高于设定的阀值(这里优选阈值设为1 GB),则输出“Error: Container memory usage is higher than threshold ($memory_thresholdbytes).&quot;并退出脚本;
S505.检查全部完成,则输出“Container health check completedsuccessfully.&quot;并以0状态退出脚本。
具体实现方法如下:
# 获取容器ID
container_id=$(docker ps -q)
# 检查容器运行状态
container_status=$(docker inspect --format='{{.State.Status}}'$container_id)
if [ $container_status !=&quot;running&quot; ]; then
 echo&quot;Error: Container is not running.&quot;
 exit 1
fi
# 检查容器端口运行状态
port_status=$(docker inspect --format='{{.NetworkSettings.Ports}}'$container_id)
if [ -z&quot;$port_status&quot; ]; then
 echo&quot;Error: Container ports are not open.&quot;
 exit 1
fi
# 检查容器网络状态
network_status=$(docker inspect --format='{{.NetworkSettings.Networks}}'$container_id)
if [ -z&quot;$network_status&quot; ]; then
 echo&quot;Error: Container network is not connected.&quot;
 exit 1
fi
# 检查容器CPU使用率
cpu_usage=$(docker inspect --format='{{.HostConfig.CpuPercent}}'$container_id)
cpu_threshold=80
if [ $cpu_usage -gt $cpu_threshold ]; then
 echo&quot;Error: Container CPU usage is higher than threshold ($cpu_threshold%).&quot;
 exit 1
fi
# 检查容器存储使用率
storage_usage=$(docker inspect --format='{{.HostConfig.StorageOpt.Size}}'$container_id)
storage_threshold=100000000
if [ $storage_usage -gt $storage_threshold ]; then
 echo&quot;Error: Container storage usage is higher than threshold ($storage_threshold bytes).&quot;
 exit 1
fi
# 检查容器内存使用率
memory_usage=$(docker inspect --format='{{.HostConfig.Memory}}'$container_id)
memory_threshold=1000000000
if [ $memory_usage -gt $memory_threshold ]; then
 echo&quot;Error: Container memory usage is higher than threshold ($memory_threshold bytes).&quot;
 exit 1
fi
echo&quot;Container health check completed successfully.&quot;
exit 0
通过以上健康状态检测过程,能够对安装过程是否成功实现高效自动化检测并输出检测结果反馈,有效提高用户体验。
此外,通过配置文件渲染部署结构,能够快速部署任何架构的应用软件,包括MySQL、Elasticsearch、NFS、MongoDB、PostgreSQL、K3S、Redis、JupyterHub、MINIO、CDH、Rancher、Kafka、Zookeeper等单机模式或集群模式的应用软件的能力。
根据配置文件一键渲染部署脚本及部署包,可根据用户配置文件一键部署多种应用软件架构的集群模式或单机模式,省去复杂的手动配置,部署一个应用软件无论是集群模式还是单机模式仅需几分钟便可完成。
另一方面,本发明提供一种基于自动化脚本安装应用软件的装置,所述装置用于实现根据本发明的基于自动化脚本安装应用软件的方法。
本发明流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为表示包括一个或多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,可以实现在任何计算机刻度介质中,以供指令执行系统、装置或设备,所述计算机可读介质可以是任何包含存储、通信、传播或传输程序以供执行系统、装置或设备使用。包括只读存储器、磁盘或光盘等。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,本领域的技术人员可以在不产生矛盾的情况下,将本说明书中描述的不同实施例或示例以及其中的特征进行结合或组合。
上述内容虽然已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型等更新操作。

Claims (10)

1.一种基于自动化脚本安装应用软件的方法,其特征在于,所述方法包括以下步骤:
S1. 配置待部署软件的部署信息,所述部署信息包括软件基本属性信息和目标机器配置文件的模板信息;
S2. 获取所述待部署软件目标服务器信息;
S3. 基于所述待部署软件的基本属性信息和对应的服务器信息,为不同类型的系统软件配置对应的参数信息,所述参数信息包括主从IP地址、内存大小和CPU数量;并根据服务器信息渲染出待部署的软件配置元数据;
S4. 按照部署信息和所述的系统软件的参数信息,依次安装所述系统软件;
S5. 根据软件安装配置信息进行健康检查。
2.根据权利要求1所述的基于自动化脚本安装应用软件的方法,其特征在于,步骤S1中配置待部署软件的部署信息的实现方式如下:从 Docker HUB 官方镜像仓库拉取所需要安装的原生软件镜像包至本地,之后将软件镜像包导出至 simbastack-master/src 目录下,将软件镜像包连同自动化部署工具打包并上传到 Linux 服务器中的 /opt 目录下,将其解压,配置 config/nodes.conf 软件安装配置文件,并按照该配置文件的配置规范说明配置所需要安装的软件。
3.根据权利要求1所述的基于自动化脚本安装应用软件的方法,其特征在于,步骤S2中,获取所述待部署软件目标服务器信息的方式如下:将自动化部署工具所在机器的公钥传输到目标主机,实现SSH免密的打通,然后获取目标服务器的系统版本、CPU指令集架构、内存大小、数据盘挂载目录和数据盘大小,将获取的目标服务器的配置规格生成配置文件。
4.根据权利要求1所述的基于自动化脚本安装应用软件的方法,其特征在于,步骤S3中,根据S2获取到的服务器信息,为不同类型的系统软件配置对应的参数信息的方式如下:将 config/nodes.conf 安装配置文件中配置的内存大小与S2步骤中获取到的服务器信息进行对比,并根据实际目标机器的配置规格计算出合理的配置规格,然后再根据实际配置渲染出待部署的软件安装元数据信息。
5.根据权利要求4所述的基于自动化脚本安装应用软件的方法,其特征在于,待部署的软件安装元数据信息包括:内存使用大小、最低CPU数量使用个数,数据盘挂载点及安装目录;应用所需的资源计算过程包括以下步骤:
S301.计算安装软件所需的磁盘空间;
S302.通过读取 /proc/net/dev 文件计算当前的网络带宽;
S303.重新读取 /proc/net/dev 文件计算一秒后的网络带宽;
S304.计算网络带宽的消耗情况以及计算安装软件所需的网络带宽;
S305.读取待安装软件的配置文件,判断资源是否充足,若充足,则继续进行资源评估:当同时满足服务器的空闲内存大于应用软件所需的内存、服务器空闲内存大于应用软件所需的磁盘空间、服务器的网络速率大于应用软件所需的网络速率时,安装软件检查前置任务继续进行;当所有的条件不满足时,则回显给客户终端,条件不满足并列出不满足无法继续安装软件的原因;
S306.通过使用top命令计算出服务器的当前CPU使用率,再通过使用ps命令计算出服务器上运行的进程数量;判断当前CPU使用率和进程数量是否超过设定的阈值,若资源使用情况在阈值范围内,则继续执行应用软件安装;若超出进程数,则回显给客户终端,条件不满足并列出不满足无法继续安装软件的原因;若CPU过高则回显给客户终端,并终止软件安装。
6.根据权利要求1所述的基于自动化脚本安装应用软件的方法,其特征在于,步骤S4中,自动安装软件,具体自动化执行步骤如下:
将软件镜像包传输到目标机器的/tmp目录下:
将软件安装脚本传输到目标机器/tmp/目录下:
远程执行软件安装脚本:安装过程包括:安装Docker环境、创建目录、导入软件镜像、创建编排文件,将软件镜像导入到目标机的 docker 中,之后启动软件服务。
7.根据权利要求1所述的基于自动化脚本安装应用软件的方法,其特征在于,步骤S5中,安装完成后自动检测服务健康状态,检查目标机软件服务是否启动成功。
8.根据权利要求7所述的基于自动化脚本安装应用软件的方法,其特征在于,若检测启动失败,通过屏显方式告知执行用户失败原因。
9.根据权利要求7所述的基于自动化脚本安装应用软件的方法,其特征在于,若检测启动成功,将部署后的信息生成软件安装日志文件保存在目标机器的软件安装目录,并将安装信息打印在屏幕中,部署后的信息包括软件安装的账号、软件安装密码和软件监听端口信息。
10.一种基于自动化脚本安装应用软件的装置,其特征在于,所述装置用于实现根据权利要求1-9任一项所述的基于自动化脚本安装应用软件的方法。
CN202310198717.0A 2023-03-03 2023-03-03 一种基于自动化脚本安装应用软件的方法及装置 Active CN115904419B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310198717.0A CN115904419B (zh) 2023-03-03 2023-03-03 一种基于自动化脚本安装应用软件的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310198717.0A CN115904419B (zh) 2023-03-03 2023-03-03 一种基于自动化脚本安装应用软件的方法及装置

Publications (2)

Publication Number Publication Date
CN115904419A true CN115904419A (zh) 2023-04-04
CN115904419B CN115904419B (zh) 2023-05-16

Family

ID=85733798

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310198717.0A Active CN115904419B (zh) 2023-03-03 2023-03-03 一种基于自动化脚本安装应用软件的方法及装置

Country Status (1)

Country Link
CN (1) CN115904419B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116431230A (zh) * 2023-04-11 2023-07-14 合芯科技有限公司 一种操作系统部署方法、装置、计算机设备及存储介质
CN116909584A (zh) * 2023-05-06 2023-10-20 广东国地规划科技股份有限公司 时空大数据引擎的部署方法、装置、设备以及存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124245A1 (en) * 2000-08-14 2002-09-05 Alvin Maddux Method and apparatus for advanced software deployment
US20050086307A1 (en) * 2003-09-30 2005-04-21 International Business Machines Corporation Method, system and storage medium for providing autonomic identification of an important message
CN103019791A (zh) * 2012-12-19 2013-04-03 中国电子科技集团公司第十五研究所 软件部署方法及软件部署系统
WO2015165111A1 (en) * 2014-04-30 2015-11-05 Pivotal Software, Inc. Fast deployment across cloud platforms
CN107391092A (zh) * 2016-05-16 2017-11-24 北京京东尚科信息技术有限公司 自动部署关联软件的方法和系统
CN108052333A (zh) * 2017-12-11 2018-05-18 北京紫优能源科技有限公司 一种电力调度集控系统标准化自动化部署方法及架构
WO2019089446A1 (en) * 2017-10-30 2019-05-09 Hitachi Vantara Corporation Generating testing infrastructure on a cloud for testing software applications
CN111782232A (zh) * 2020-07-31 2020-10-16 平安银行股份有限公司 集群的部署方法、装置、终端设备及存储介质
CN112084009A (zh) * 2020-09-17 2020-12-15 湖南长城科技信息有限公司 PK体系下基于容器化技术构建和监控Hadoop集群与告警的方法
CN113391827A (zh) * 2021-08-17 2021-09-14 湖南省佳策测评信息技术服务有限公司 一种基于自动化脚本的应用软件发布方法及系统
CN114253569A (zh) * 2020-09-22 2022-03-29 罗克韦尔自动化技术公司 使用容器编排系统来更新操作技术设备
CN114924971A (zh) * 2022-05-27 2022-08-19 中国银行股份有限公司 测试环境部署方法及装置
CN115361385A (zh) * 2022-08-15 2022-11-18 山东体育学院 Docker Swarm环境中云原生应用自动弹性伸缩系统和伸缩方法
CN115718606A (zh) * 2022-11-30 2023-02-28 杭州比智科技有限公司 一种服务器自动化持续集成与部署的方法及系统

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124245A1 (en) * 2000-08-14 2002-09-05 Alvin Maddux Method and apparatus for advanced software deployment
US20050086307A1 (en) * 2003-09-30 2005-04-21 International Business Machines Corporation Method, system and storage medium for providing autonomic identification of an important message
CN103019791A (zh) * 2012-12-19 2013-04-03 中国电子科技集团公司第十五研究所 软件部署方法及软件部署系统
WO2015165111A1 (en) * 2014-04-30 2015-11-05 Pivotal Software, Inc. Fast deployment across cloud platforms
CN107391092A (zh) * 2016-05-16 2017-11-24 北京京东尚科信息技术有限公司 自动部署关联软件的方法和系统
WO2019089446A1 (en) * 2017-10-30 2019-05-09 Hitachi Vantara Corporation Generating testing infrastructure on a cloud for testing software applications
CN108052333A (zh) * 2017-12-11 2018-05-18 北京紫优能源科技有限公司 一种电力调度集控系统标准化自动化部署方法及架构
CN111782232A (zh) * 2020-07-31 2020-10-16 平安银行股份有限公司 集群的部署方法、装置、终端设备及存储介质
CN112084009A (zh) * 2020-09-17 2020-12-15 湖南长城科技信息有限公司 PK体系下基于容器化技术构建和监控Hadoop集群与告警的方法
CN114253569A (zh) * 2020-09-22 2022-03-29 罗克韦尔自动化技术公司 使用容器编排系统来更新操作技术设备
CN113391827A (zh) * 2021-08-17 2021-09-14 湖南省佳策测评信息技术服务有限公司 一种基于自动化脚本的应用软件发布方法及系统
CN114924971A (zh) * 2022-05-27 2022-08-19 中国银行股份有限公司 测试环境部署方法及装置
CN115361385A (zh) * 2022-08-15 2022-11-18 山东体育学院 Docker Swarm环境中云原生应用自动弹性伸缩系统和伸缩方法
CN115718606A (zh) * 2022-11-30 2023-02-28 杭州比智科技有限公司 一种服务器自动化持续集成与部署的方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
许兆新;周长林;: "Linux集群节点自动化部署方法与实现", 应用科技 *
赵静;邓光北;: "基于Oracle的信息系统标准化快速部署模式研究", 信息通信 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116431230A (zh) * 2023-04-11 2023-07-14 合芯科技有限公司 一种操作系统部署方法、装置、计算机设备及存储介质
CN116431230B (zh) * 2023-04-11 2023-11-24 合芯科技有限公司 一种操作系统部署方法、装置、计算机设备及存储介质
CN116909584A (zh) * 2023-05-06 2023-10-20 广东国地规划科技股份有限公司 时空大数据引擎的部署方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
CN115904419B (zh) 2023-05-16

Similar Documents

Publication Publication Date Title
CN115904419A (zh) 一种基于自动化脚本安装应用软件的方法及装置
US7340649B2 (en) System and method for determining fault isolation in an enterprise computing system
CN103117879B (zh) 一种计算机硬件运行参数网络监测系统
EP2472402A1 (en) Remote management systems and methods for mapping operating system and management controller located in a server
US10853052B1 (en) Peripheral device firmware update using rest over IPMI interface firmware shell utility
US20140122931A1 (en) Performing diagnostic tests in a data center
CN112148542B (zh) 一种分布式存储集群的可靠性测试方法、装置及系统
US20150081878A1 (en) Describing datacenter rack information in management system
CN108347476B (zh) 跨机房数据同步方法、装置以及服务器
CN109189627B (zh) 一种硬盘故障监控检测方法、装置、终端及存储介质
CN111130962B (zh) 一种交换机自动化配置方法、设备、系统及存储介质
US20100280855A1 (en) Management of a first stand-alone system used as a subsystem within a second system
WO2017017691A1 (en) Testing computing devices
US20140280469A1 (en) Method and apparatus for remote management of computer system using handheld device
US20230214229A1 (en) Multi-tenant java agent instrumentation system
CN116304233A (zh) 用于微服务体系结构中的增强的调试的遥测目标查询注入
CN114553672B (zh) 一种应用系统性能瓶颈确定方法、装置、设备、介质
CN109783026A (zh) 一种自动化配置服务器raid的方法及装置
CN109189652A (zh) 一种封闭网络终端行为数据的采集方法及系统
CN112799904A (zh) 一种服务器批量自动化运行巡检方法、装置及介质
CN106330595A (zh) 分布式平台的心跳检测方法和装置
US11720434B2 (en) Data collection agent trained for telemetry data collection
CN114327536A (zh) 一种服务器运维方法、装置、设备及存储介质
CN109614279B (zh) 一种工控机自检系统及其控制方法和相关设备
CN111475398A (zh) 一种服务器nic诊断方法、系统、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant