硬核!!教你如何通过脚本自动部署虚拟机并安装操作系统

简介: 硬核!!教你如何通过脚本自动部署虚拟机并安装操作系统

前言


学习过Linux的小伙伴们应该都知道,我们刚开始学习的时候都需要自己安装一台虚拟机并在虚拟机上安装操作系统来进行学习。整个过程是比较繁琐的,首先你要先安装虚拟机软件,比如VMware这些,之后你需要找到对应的操作系统的镜像导入到虚拟机,完成操作系统的安装,接下来还需要配置网卡的IP地址,保证网络不出错等等。做完这些操作往往需要花费大量的时间,如果接下来还需要部署一些软件环境的话,可能还要手动操作很久,并且不能保证每一步的不报错。这里引入Vagrant+VirtualBox,教大家如何通过运行脚本的方式快速搭建系统环境


开始之前我们先来说一下自己搭建虚拟机的一个痛点

安装麻烦,安装好虚拟机之后需要导入需要的操作系统,安装操作系统的过程也要耗费一些时间

初始配置繁琐,系统装好之后往往需要配置IP让网络可以正常访问,这一步对与刚刚学习Linux的同学来说容易出错

搭建环境的时候,比如你搭建一个Hadoop框架,需要几十个步骤,而且不能保证每一步不报错

框架搭建完之后,如果想要搭建集群,那么又需要新建别的虚拟机,之后重复之前的步骤,还要基于原来的虚拟机分发框架,整个过程非常耗时

基于Ruby的工具Vagrant

为了解决上面的问题,这里给引入一共自动化部署的工具Vagrant,Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。使用Vagrant我们可以通过自己编写的脚本来一键自动化部署虚拟机并安装操作系统。其中一共很大的好处就是,例如我们需要搭建一套大数据的框架,并给多位同时一起使用,但是要保证环境一致,如果手动安装将要耗费大量时间。所以我们可以创建一个项目,之后写上框架搭建的脚本,这样需要运行项目的时候,让同事执行一下脚本即可快速进行环境搭建部署,这样就可以大大节省时间,不用考虑虚拟机的安装问题。使用VirtualBox的原因是这个软件是开源免费的,不同于VMware需要进行付费使用,他与vagrant可以达到很好的配合。


image.pngVagrant的用处

Vagrant 可以使用自己编写的脚本配置虚拟机的一些环境参数

Vagrant 可以帮助我们快速创建一台虚拟机

Vagrant 可以根据我们的脚本指定自动部署操作系统

Vagrant 可以自动帮助我们配置网络

Vagrant 可以在我们创建完虚拟机之后运行指定的脚本部署我们想要的服务

我们可以使用 Vagrant 的命令登录到虚拟机中进行操作,类似于虚拟机的远程连接工具

我们可以使用 Vagrant 的命令开启或者关闭虚拟机

使用Vagrant自动部署一台虚拟机

1.Vagrant 的相关命令


Vagrantfile, 虚拟机的配置文件,创建的名字一定要叫这个,不能有误差

vagrant reload,重启虚拟机

vagrant up, 创建一个符合 Vagrantfile 配置的虚拟机

Provision, 当 Vagrant 建立虚拟机后, 会执行通过 Provision 配置的自动化脚本, 自动化的安装服务

vagrant destroy,可以清除虚拟机

2.安装Vagrant与VirtualBox


这两个软件的大家可以直接搜索官网进行安装,安装步骤较简单,一直点下一步即可,也可私信我进行软件获取。

image.pngimage.png我们可以选择任意新建一共目录进行脚本的编写,但有一点要注意的是,路径一定要是全英文的!下面是脚本的编写部分,大家不用特意去学习Ruby的语法,能看懂大致的意思即可,当然想要深入的了解的话也可以查看对应的官方文档进行学习

image.pngimage.png5.通过ssh命令远程连接虚拟机进行操作


vagrant ssh dge 这样就可以连接到我们创建好的虚拟机了,可以看到连接上之后就跟我们在虚拟机装好的Centos7系统一样操作,Vagrant很强大的一点就是,我们把文件放在运行命令的目录下,他会自动帮我们把文件进行同步到虚拟机。


image.png6.在创建虚拟机完毕时,执行我们特定的脚本


这个功能是很常用的,可以帮助我们快速搭建环境,在虚拟机创建完成之后我们可以让vagrant帮我们在机器运行指定的脚本,脚本的内容同学们可以根据需求进行编写,例如我创建了一共script.sh脚本放在相同目录


echo "Hello My First vagrant  By  YO"

1

之后我们先清除之前创建的虚拟机,再次建立虚拟机,可以看到虚拟机创建完成之后被顺利运行


image.png7.使用Vagrant搭建一共虚拟机集群


在生成环境中,我们的环境往往需要一个集群去运行,vagrant也可以帮助我们使用脚本创建集群,并配置好每一台机器的Ip网关,同上面的步骤一样,新建文件夹,编写配置文件脚本。我们创建三台机器,master01,worker01,worker02.并设置好每台机器的环境参数。

Vagrant.configure("2") do |config|
    config.vm.define "master01" do |master01|
        master01.vm.box = 'centos/7'
        master01.disksize.size = '50GB'
        master01.vm.network 'private_network', ip: '192.168.56.101'
        master01.vm.hostname = 'master01'
        master01.vm.provider 'virtualbox' do |vb|
            vb.gui = false
            vb.name = 'master01'
            vb.memory = 8000
            vb.cpus = 2
            vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
        end
    end
    config.vm.define "worker01" do |worker01|
        worker01.vm.box = 'centos/7'
        worker01.disksize.size = '50GB'
        worker01.vm.network 'private_network', ip: '192.168.56.102'
        worker01.vm.hostname = 'worker01'
        worker01.vm.provider 'virtualbox' do |vb|
            vb.gui = false
            vb.name = 'worker01'
            vb.memory = 5000
            vb.cpus = 1
            vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
        end
    end
    config.vm.define "worker02" do |worker02|
        worker02.vm.box = 'centos/7'
        worker02.disksize.size = '50GB'
        worker02.vm.network 'private_network', ip: '192.168.56.103'
        worker02.vm.hostname = 'worker02'
        worker02.vm.provider 'virtualbox' do |vb|
            vb.gui = false
            vb.name = 'worker02'
            vb.memory = 5000
            vb.cpus = 1
            vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
        end
    end
end

再次运行集群vagrant up,之后就可以在VirtualBox里面可以看到我们创建的虚拟机以及相关参数,通过ssh,命令即可进行远程连接操作。整个过程不超过10分钟,相比起手动一台台的虚拟机搭建,这种方式大大节省了我们的时候。

image.png8.也可以通过远程连接工具进行操作


如果我们想要使用XSHell等远程工具进行连接也是可以的,在运行vagrant的目录,我们找到machines文件,里面有每一台机器对应的private_key使用这个密钥我们就可以实现远程登录连接了。


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ENRZ6PLi-1628348115034)(picture/image-20210803131404937-1627968147477.png)]


8.也可以通过远程连接工具进行操作


如果我们想要使用XSHell等远程工具进行连接也是可以的,在运行vagrant的目录,我们找到machines文件,里面有每一台机器对应的private_key使用这个密钥我们就可以实现远程登录连接了。



image.png

image.png到这里我们已经能使用vagrant快速搭建虚拟机已经运行脚本,其实他还有很多强大的功能,大家感兴趣可以去官网进行深入了解学习!



相关文章
|
1月前
|
运维 自然语言处理 Linux
os-copilot安装和使用体验测评
OS Copilot是阿里云推出的操作系统智能助手,基于大模型技术,支持自然语言问答、命令执行和系统运维调优等功能,帮助用户更高效地使用Linux系统。本文介绍了OS Copilot的产品优势、功能特点及使用方法,包括对话模式、-t/-f/管道等参数的使用,以及安装和配置步骤。通过OS Copilot,用户可以简化复杂命令的操作,提升工作效率。同时,文中也分享了个人开发者在实际使用中的体验和建议,指出了一些有待改进的地方。
|
30天前
|
运维 关系型数据库 MySQL
os-copilot安装_配置_功能测试全集
我是一位中级运维工程师,我平时工作会涉及到 各类服务器的 数据库 与 java环境配置 操作。 我顺利使用了OS Copilot的 -t -f | 功能,我的疑惑是不能在自动操作过程中直接给与脚本运行权限,必须需要自己运行一下 chmod 这个既然有了最高的权限,为什么就不能直接给与运行权限呢。 我认为 -t 功能有用,能解决后台运行基础命令操作。 我认为 -f 功能有用,可以通过task文件中撰写连续任务操作。 我认为 | 对文件理解上有很直接的解读,可以在理解新程序上有很大帮助。
164 86
|
25天前
|
运维 JavaScript 应用服务中间件
os-copilot安装与多项功能测评,帮助开发人员PHP环境排查问题
本文介绍了OS Copilot在ECS上 Alibaba Cloud Linux的安装与使用,并对其多项参数进行了功能测评。OS Copilot是为操作系统提供智能化辅助的工具,支持自动化任务、智能推荐、故障排查等功能。安装时需检查是否已安装(`rpm -q os-copilot`),若未安装则用`yum install os-copilot`命令安装,并配置AccessKey信息连接阿里云服务。通过测试不同参数命令,如`-t`参数,展示了其自动化执行和智能生成回答的能力,显著提升运维效率。
os-copilot安装与多项功能测评,帮助开发人员PHP环境排查问题
|
5天前
|
运维 自然语言处理 Linux
os-copilot安装和使用体验测评
OS Copilot是阿里云基于大模型构建的Linux系统智能助手,支持自然语言问答、命令执行和系统运维调优。本文介绍其产品优势、功能及使用方法,并分享个人开发者在云服务器资源管理中的实际应用体验。通过-t/-f/管道功能,OS Copilot简化了复杂任务处理,但仍需增强某些命令的执行能力,特别是在数据库安装部署方面。文中详细描述了安装步骤、环境配置及常见问题解决方法,帮助用户更好地利用OS Copilot提高工作效率。
|
25天前
|
弹性计算 Ubuntu Java
OS-Copilot-ubuntu镜像版本的具体测试使用(安装方式有单独注明)
作为一名个人开发者,我主要负责云资源的运维和管理。在使用OS Copilot的过程中,我遇到了一些配置问题,特别是在ECS实例中设置AccessKey时,但最终成功解决了。通过使用OS Copilot的-t/-f/管道功能,我大大提升了效率,减少了命令编写的工作量,特别是在搭建Java运行环境时效果显著。此外,| 功能帮助我快速理解文档,整体体验非常流畅,推荐给其他开发者使用。
38 6
|
30天前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
71 7
|
1月前
|
弹性计算 运维 数据可视化
OS Copilot安装与多项功能测评报告
OS Copilot安装与多项功能测评报告
103 15
|
3月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
1951 3
|
3月前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
142 50