Django运维系统之---一键部署Apache

背景

运维系统的好处就是可以将复杂的事情简单化!就好比说去部署一个应用,要下载配置启动设置开机自启等等一系列操作,但是我们可以利用工具去帮我们执行这一系列的东西~只需要手指轻轻一点就完成

一、思路

部署应用其实就去去下载服务软件,然后按照自己的需求去修改配置文件,从而达到我们想要的服务。
那么我们意见部署的思路就是:
当系统连接上服务器后,让后台发送shell,让服务器执行指定的shell就可以完成下载了。但是要达到我们需要的服务效果,还需要对配置文件进行修改。

二、实现

1.连接websocket与ssh后,点击一键部署按钮,将部署信号发送给webscoekt服务端,
html:

<button class="btn btn-success" style="float: right" id="sendApache">一键部署</button>

js:

             $('#sendApache').click(function () {
            //如果未连接到websocket
            if (!window.s) {
                $('#showmess').prepend('没有连接主机');
            } else {
                window.s.send('Apache');//通过websocket发送数据
            }
        });

后台:
如果接收回来的信息是部署信号,就让让服务器执行部署指令:

        for shell in request.websocket:
            if shell.decode('utf-8') == 'Apache':
                print(shell.decode('utf-8'))
                addactionshell = models.batchaction()
                addactionshell.hostaddress = hostip
                addactionshell.username = request.session['username']
                addactionshell.actionshell = '部署Apache'
                addactionshell.starttime = time.strftime("%Y%m%d%H%M%S")
                addactionshell.save()
                for i in range(hostnum):
                    message = f'主机{hostip[i]}Apache部署中...等待执行结果!'
                    request.websocket.send(message.encode('utf-8'))
                    try :
                        cmd = 'yum install httpd -y;systemctl start httpd; systemctl enable httpd;firewall-cmd --permanent --add-service=http;firewall-cmd --reload;'
                        b[i], c[i], d[i] = a[i].exec_command(cmd)
                        output = '-' * 97 + f'{hostip[i]}执行结果' + '-' * 90 + c[i].read().decode('utf-8') + d[i].read().decode('utf-8')
                        request.websocket.send(output.encode('utf-8'))
                        print('Apache部署成功')

                    except:
                        print('Apache部署失败')
                        shellscrpmess = '-' * 97 + f'{hostip[i]}执行结果' + '-' * 94 +'部署失败!'
                        request.websocket.send(shellscrpmess.encode('utf-8'))

效果:
在这里插入图片描述
在这里插入图片描述

三、结束

抛砖引玉到这里~没有把一键部署做的太详细(比如说可以设置应用常见的配置),我个人觉得,有一个批量执行bashshell与批量执行shell脚本就足以满足大部分的批量部署,特别是应该善于运用shell脚本帮我们做事。但是对于不会shell脚本来说,这个一键功能就显得特别重要,以后也会继续完善这个一键部署的功能的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值