opendevops基于腾讯云vps的一键部署脚本

2022-03-28 13:59:35 浏览数 (1)

前言

opendevops是一款为用户提供企业多混合云、自动化运维、完全开源的云管理平台。 opendevops前端基于Vue iview开发、为用户提供友好的操作界面,增强用户体验。 opendevops后端基于Python Tornado开发,其优势为轻量、简洁清晰、异步非阻塞。 opendevops开源多云管理平台为用户提供多功能:ITSM、基于RBAC权限系统、Web Terminnal登陆日志审计、录像回放、强大的作业调度系统、CMDB、监控报警系统等

项目官网:https://docs.opendevops.cn/

部署

opendevops 官方有单机部署文档,和分布式部署文档。本篇文章采用一台vps来模拟分布式部署方式。

环境准备

单机版官方建议配置

  • 系统:centos7
  • cpu:4
  • 内存:8G
  • 磁盘:50G

实验环境可以采用阿里云的抢占试实例或者腾讯云的竞价实例,价格非常便宜。测试完成后,直接删除,下次测试重新创建即可。很方便。

一键部署脚本

获取一键安装脚本 脚本下载地址:

  1. 系统优化
  2. 关闭selinux
  3. 清空防火墙规则
  4. 安装python,docker,docker-compose
  5. 安装支持模块(mysql,redis,RabbitMQ,dnsmysql)
  6. 修改变量(密码,密钥,IP地址)
  7. 安装应用模块(codo,codo-admin,webterminallte,codo-cmdb,codo-cron,codo-task,codo-tools,codo-kerrigan,codo-dns,api-gateway)

编号

模块名称

说明

日志路径

1

codo

前端

/var/log/nginx/codo-access.log

2

codo-admin

管理模块

/var/log/supervisor/mg.log

3

webterminallte

webshell

4

codo-cmdb

资产管理

/var/log/supervisor/(cmdb.log,cmdb_cron.log)

5

codo-cron

定时任务

/var/log/supervisor/cron.log

6

codo-task

任务系统

/var/log/supervisor/(task_scheduler.log,exec_task.log)

7

codo-tools

运维工具

/var/log/supervisor/(tools.log,cron_jobs.log)

8

codo-kerrigan

配置中心

/var/log/supervisor/kerrigan.log

9

codo-dns

域名管理

/var/log/supervisor/codo_dns.log

10

api-gateway

api网关

安装部署

获取脚本,解压

代码语言:javascript复制
tar xvf opendevops.tgz -C /tmp  && rm -f opendevops.tgz

设置密码密钥等变量(mysql密码,redis密码,cookie_secret,token_secret)

代码语言:javascript复制
vim env.sh
代码语言:javascript复制
#部署的IP地址,改成你自己的vpsIP地址
export LOCALHOST_IP="10.10.10.**"  #内网地址
export PUBLIC_IP="119.45.122.**"  #外网地址

#设置你的MYSQL密码
export MYSQL_PASSWORD="ntFjoq2E5***mHy8eM"

### RabbitMQ用户密码信息
export MQ_USER="rbm"
export MQ_PASSWORD="fdh963df7***odG"

### 设置你的redis密码
export REDIS_PASSWORD="dstJ6XP***S5zcifMT"

#codo-admin用到的cookie和token,(长度50位)
export cookie_secret="rOQD(SHn8wEb*7AdIfm*h*****gapMN5xcIGxBF64VoU?q0Jav"
# 这里codo-admin和gw网关都会用到,一定要修改。可生成随意字符,长度50位
export token_secret="D?wXH0N*ZGj8YTRIxcPun!5*y6qQM97xU1L*****SfvFAi*km"


##如果要进行读写分离,Master-slave主从请自行建立,一般情况下都是只用一个数据库就可以了
# 写数据库
export DEFAULT_DB_DBHOST=${LOCALHOST_IP}
export DEFAULT_DB_DBPORT='3306'
export DEFAULT_DB_DBUSER='root'
export DEFAULT_DB_DBPWD=${MYSQL_PASSWORD}

# 读数据库
#export READONLY_DB_DBHOST=${LOCALHOST_IP}
#export READONLY_DB_DBPORT='3306'
#export READONLY_DB_DBUSER='root'
#export READONLY_DB_DBPWD=${MYSQL_PASSWORD}


# 消息队列
export DEFAULT_MQ_ADDR=${LOCALHOST_IP}
export DEFAULT_MQ_USER=${MQ_USER}
export DEFAULT_MQ_PWD=${MQ_PASSWORD}

# 缓存
export DEFAULT_REDIS_HOST=${LOCALHOST_IP}
export DEFAULT_REDIS_PORT=6379
export DEFAULT_REDIS_PASSWORD=${REDIS_PASSWORD}

执行自动安装

代码语言:javascript复制
sh tencent_autoinstall.sh

若没有报错,则安装完成

访问测试

本机绑定hosts

代码语言:javascript复制
119.45.122.** demo-init.opendevops.cn  #vps外网地址

浏览器访问 访问地址: http://demo-init.opendevops.cn

健康检查

若登录失败,则按照下面思路进行排查 检查dns

  1. 确保你的dnsmasql服务是启动的,服务没有报错
  2. 确保/etc/dnsmasqhosts文件有解析的IP
  3. 确保你网关的这台机器/etc/resolv.conf DNS执行你刚部署的dnsmasq服务IP
  4. 确保你网关所在的机器都能正常ping通所有的服务,比如:ping cmdb2.opendevops.cn
  5. 确保你的防火墙规则是清空的iptables -F
  6. 确保你的SELINUX是关闭的setenforce 0

微服务健康检查

代码语言:javascript复制
# 进行所有服务进行检测,返回200则正常
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://mg.opendevops.cn:8010/are_you_ok/
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://task.opendevops.cn:8020/are_you_ok/
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://cmdb2.opendevops.cn:8050/are_you_ok/
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://kerrigan.opendevops.cn:8030/are_you_ok/
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://cron.opendevops.cn:9900/are_you_ok/
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://tools.opendevops.cn:8040/are_you_ok/
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://dns.opendevops.cn:8060/are_you_ok/
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://gw.opendevops.cn:8888/api/accounts/are_you_ok/
curl -I -X GET -m 10 -o /dev/null -s -w %{http_code} http://demo-init.opendevops.cn

FAQ

部署成功后,登录闪退

根据官方文档部署完成后,登录闪退。经过调试,发现是密钥格式问题。替换正确的密钥后,登录正常

随机密钥生成方法

代码语言:javascript复制
import random
import uuid
s="abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVIXYZ!aN$x*6*()?" 
s1="abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVIXYZ"
#不带特殊字符
print(''.join(random.sample(s1,18)))
#带特殊字符
print(''.join(random.sample(s,50)))
#uuid
print(uuid.uuid4())

vps重启后,模块启动失败

报错: not found in upstream "gw.opendevops.cn"

检查本机 /etc/resolv.conf,确保nameserver 指向 dnsmasq服务所在地址

验证 rabbitmq 消息队列模块

用户密码存在于env.sh 本机绑定host 通过浏览器访问 http://rabbitmq.opendevops.cn:15672/#/

0 人点赞