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

软件自动化部署脚本

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 << EOF
export JAVA_HOME
=/usr/local/jdk1.7.0_45 export PATH=\$PATH:\$JAVA_HOME/bin EOF

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

#!/bin/bash

#将要安装的机器的列表,方便下面循环遍历$SERVERS
SERVERS="slaver1 slaver2 slaver3 slaver4 slaver5 slaver6"
PASSWORD=hadoop
BASE_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 $SERVERS
do
    #循环遍历发送安装脚本。发送到/root目录下面。
    scp install.sh root@$SERVER:/root
    #登陆到这台机器。然后执行这个操作脚本。
    ssh root@$SERVER /root/install.sh
done

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

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

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

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

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

给脚本添加执行权限:

 [root@master hadoop]# chmod +x boot.sh install.sh

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

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

2017-11-16 22:28:48

相关文章:

  • 深度神经网络(DNN)的正则化
  • 敏捷个人手机应用:如何使用时中法目标
  • Vue.js系列之三模板语法
  • docker compose部署服务
  • SQL2005中时,Diagrams的问题
  • PreparedStatement--摘抄自http://blog.chinaunix.net/u/28512/showart_221625.html
  • Map集合的四种遍历方式
  • 关于vs2005调试mobile5.0时 Deploy速度慢的问题[Teaks]
  • Android Studio nativeLibraryDirectories=[/data/app/com.lukouapp-1/lib/arm64, /vendor/lib64, /syste
  • 取消Exchange server 2010中邮件禁止匿名发送邮件功能
  • python学习笔记——列表
  • 揭秘入围央采的锐捷大数据安全平台是什么东西?
  • Xcode调试断点不停止解决方案!
  • 把字符串转化为类型
  • Android中文API(127) —— MessageQueue
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • js如何打印object对象
  • js正则,这点儿就够用了
  • MySQL主从复制读写分离及奇怪的问题
  • python学习笔记-类对象的信息
  • ReactNativeweexDeviceOne对比
  • SQLServer之索引简介
  • vagrant 添加本地 box 安装 laravel homestead
  • 构建工具 - 收藏集 - 掘金
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 将回调地狱按在地上摩擦的Promise
  • 解析带emoji和链接的聊天系统消息
  • 经典排序算法及其 Java 实现
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 删除表内多余的重复数据
  • 突破自己的技术思维
  • 系统认识JavaScript正则表达式
  • 一道面试题引发的“血案”
  • elasticsearch-head插件安装
  • (09)Hive——CTE 公共表达式
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (剑指Offer)面试题34:丑数
  • (力扣)循环队列的实现与详解(C语言)
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • . Flume面试题
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET BackgroundWorker
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET MVC 验证码
  • .Net Remoting常用部署结构
  • .NET 回调、接口回调、 委托
  • @media screen 针对不同移动设备
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ 第一章] JavaScript 简史
  • [ 数据结构 - C++]红黑树RBTree