软件自动化部署脚本

2017-11-16 20:19:53

1:设计思路:

  (1)软件自动化部署脚本,即在一台虚拟机运行脚本,就将其他虚拟机上面的软件安装好了;

  (2)而前提是自己的机器搭建好了yum网络版仓库(本地yum仓库的安装配置,如果没网了,做一个局域网内的yum仓库),这样在一台机器上面运行脚本,其他机器可以从这台机器上下载【先安装wget命令】,安装【即解压缩的操作】,配置环境变量等等【前提是脚本也实现了免密登陆操作实现】;

  (3)而这些操作可以分成两个过程,如果配置好免密登陆ssh登录,然后使用boot.sh发送一个install.sh脚本到各个机器上面,从而实现软件自动化部署操作;

2:自动化下载,安装,配置环境变量的脚本(甚至刷新一下配置文件的命令):

#!/bin/bash

#首先指定自己的yum仓库即可以下载软件的服务器名称,方便引用。
BASE_SERVER=master
#安装wget软件
yum install -y wget
#下载yum仓库上面的软件
wget $BASE_SERVER/soft/jdk-7u45-linux-x64.tar.gz
#安装,即解压缩安装自己的软件
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local
#cat一个东西到这个文件下面。#配置环境变量。<<重定向输出,>>重定向输入。#cat  >>之间有一个字符的空格。cat >> /etc/profile << EOFexport JAVA_HOME=/usr/local/jdk1.7.0_45 export PATH=\$PATH:\$JAVA_HOME/bin EOF

3:免密登陆和发送脚本的脚本。

#!/bin/bash

#将要安装的机器的列表,方便下面循环遍历$SERVERSSERVERS="slaver1 slaver2 slaver3 slaver4 slaver5 slaver6"PASSWORD=hadoopBASE_SERVER=192.168.199.130

#定义一个函数auto_ssh_copy_id() {    #expect根据系统的提示,进行应答。set timeout -1;一直不超时等待。    expect -c "set timeout -1;        #spawn指行命令。$1第一个参数,$2第二个参数。*匹配任意字符。\r回车。exp_continue表示继续操作。        #eof代表没有提示。exit 0;代表退出。        spawn ssh-copy-id $1;        expect {            *(yes/no)* {send -- yes\r;exp_continue;}            *assword:* {send -- $2\r;exp_continue;}            eof        {exit 0;}        }";}

#定义一个函数ssh_copy_id_to_all() {    for SERVER in $SERVERS    do        #调用另外一个函数,传进去两个参数,主机名称和密码,执行免密登陆操作。        auto_ssh_copy_id $SERVER $PASSWORD    done}

#调用上面定义的函数ssh_copy_id_to_all

#for循环,进行遍历每台机器。for SERVER in $SERVERSdo    #循环遍历发送安装脚本。发送到/root目录下面。    scp install.sh [email protected]$SERVER:/root    #登陆到这台机器。然后执行这个操作脚本。    ssh [email protected]$SERVER /root/install.shdone

4:下面开始操作,看看是否可以跑起来。(切记,自己的每台机器都有scp命令,并且可以正常执行,你的本地yum仓库以及搭建好了。):

  首先,如果之前安装了jdk,配置了环境变量,现在可以先删除了。然后呢,找一个主机器,启动你的web服务器。然后呢,将你的jdk传到这个web服务器上面。

现在可以将httpd服务启动起来,在浏览器访问一下:

然后呢,浏览器访问一下:

然后呢,记得将脚本上传到这个有服务器的主机上面,上传过程省略:

给脚本添加执行权限:

[[email protected] hadoop]# chmod +x boot.sh install.sh

5:我自动化安装的时候绵密登陆出现一点错误,让我手动输入密码。原因还需要分析一下:

免密登陆出现一点错误。还没解决,以后有机会好好研究一下。

2017-11-16 22:28:48

原文地址:https://www.cnblogs.com/zhoading/p/11988545.html

时间: 2024-11-06 07:46:43

软件自动化部署脚本的相关文章

MySQL5.7多实例自动化部署脚本

一.安装说明 mysql5.7.10_onekey_install.sh自动化部署脚本支持mysql5.7.10初始化安装,多实例创建,且使用经过优化后的my.cnf配置文件和mysql.server启动脚本,该SHELL脚本在CentOS6.5_x86_64操作系统测试通过.部署示意图如下: 1.安装方式 需要准备的文件如下,放到同一个目录下,然后执行shell脚本 执行方式: ./mysql5.7.10_onekey_install.sh 3307 端口自定义,要求整数,且不和服务器端口冲突

设置ssh免密码登录脚本(hadoop自动化部署脚本一)

设置ssh免密码登录脚本(飞谷云大数据自动化部署脚本一) 1.#!/bin/sh2.#important note:this script is expected to run on master node3.PWD=hdp4.USER=hdp5.SSHDIR=/home/dhp/.ssh6.7.#create temp dir to store id_pub file8.mkdir $SSHDIR/sshtmp9.10.HOST=(master slave01 slave02);11.12.f

Hadoop自动化部署脚本

摘自:http://www.wangsenfeng.com/articles/2016/10/27/1477556261953.html 1 概述 最近自己写了一个Hadoop自动化部署脚本,包括Hadoop集群自动化部署脚本和Hadoop增加单节点自动化部署脚本.需要快速部署Hadoop集群的童鞋可以使用该脚本.这些脚本我在用5台虚拟机进行了测试,如果在使用中还有bug,欢迎指出.本文主要介绍Hadoop集群自动化部署脚本,安装的Hadoop版本为2.6.0. 2 依赖 安装Hadoop2.6

Jenkins持续集成-自动化部署脚本的实现《python》

读者须知:1.本手记本着记续接前面的两张手记内容整理2.本手记针对tomcat部署测试环境实现 最近工作比较繁忙,导致这章一直拖延,没有太抽出时间来总结.要实现Jenkins端的持续集成,其实在CI服务配置端很容易,难点呢?就是如何实现自动化的部署.我的脚本设计就是为了解决以下难题: 难点一.如何使得自动化部署脚本更通用 我用的脚本,依赖依赖一个配置文件的模块化,让每一个应用业务模块更加通用.自动化所执行的命令呢?我也是设计想法本着更加通用平台的原则,至少对于tomcat+java or jav

自动化部署脚本--linux执行sh脚本

自动化部署脚本文件目录: 运行主程序:./install.sh #!/bin/bash SCRIPTPATH=$(cd "$(dirname "$0")"; pwd) Install_log=$SCRIPTPATH/install_log.txt echo "***start install***" > $Install_logecho " workspace is $SCRIPTPATH" | tee -a "

linux 自动化部署脚本

1 概述 在工作中,需要对环境中的机器打补丁或者安装软件.如果机器太多,有可能会漏掉机器,或者有些机器上版本不一致.如果能实现同一的部署,不仅能降低人为导致的错误,而且能大大提高工作效率 本文,我将介绍通过crontab设置定时任务,来实现自动化部署安装脚本,只需将脚本放在指定的路径下,就可以实现统一部署 2 环境准备 环境如下 A 环境中机器 服务器端: 192.168.32.75, 客户端: 两台CentOS6 :ip 192.168.32.61 和 ip 192.168.32.62 三台C

python+paramiko库+svn写的自动化部署脚本

第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一个脚本实现自动化部署,正巧最近在学习python,就用python写一个自动化得脚本吧. 1.首先是环境:SVN的版本控制,windows的本地,linux服务器. 2.思路:应用python,代入cmd脚本,加上强大的python库来做这件事. 3.再详细的思路: 第一步:利用SVN的cmd下得脚

Web系统自动化部署脚本

Web开发的项目,除了在本地直接运行外,还可能经常需要在服务器上部署. 写了个自动化部署的脚本,仅供参考. 不少地方需要配置路径,个人建议使用绝对路径,不用依赖执行脚本时所在的路径. #!/bin/sh #删除源代码目录,重新更新最新代码 echo 'delete git project dir'rm -rf projectecho 'delete project done'echo 'start clone git project'git clone http://git.company.co

Linux中kettle自动化部署脚本

自己写的一个自动化在Linux中部署kettle的脚本,包括一些遇到的问题在脚本中都有涉及. kettle是官网版本pdi-ce-6.1.0.1-196.zip 脚本: #!/bin/bash #Record the current directory! mulu=`pwd` #The output of JAVA_HOME number of bytes c=`echo $JAVA_HOME|wc -c` echo "Tips:Install JDK rather than JRE!Confi