今天群里讨论运维工具与运维管理平台,有的群友表示腾讯蓝鲸运维管理平台是一个很好的项目,但我觉得相对庞大复杂,部署和维护比较繁琐,关键是按照产品手册部署出来的一直都有问题,可能是我技术比较low --!,后来发现opsManage项目比较好,就开始尝试部署使用,现在也支持docker版本.
一、OpsManage是什么?
一款代码部署、应用部署、计划任务、设备资产管理平台。
开源协议:GNU General Public License v2
1.1 开发语言与框架:
- 编程语言:Python2.7 + HTML + JScripts
- 前端Web框架:Bootstrap
- 后端Web框架:Django
- 后端Task框架:Celery + Redis
1.2 OpsManage环境要求
- 编程语言:Python 2.7
- 操作系统:CentOS 6/7
- Ansible版本:2.0 +
- 部署平台及节点服务器:Rsync 3+
- MySQL版本:5.1-5.6
二、 环境部署准备工作
开源项目地址:https://github.com/welliamcao/OpsManage,里面有详细的部署步骤,但是有坑
为帮助大家顺利部署,今天带大家来完成。
另外:今天安装基本都使用源码包
,主要是为了保证与各位同学统一,因为系统不一样,yum版本就不同,所以安装出来会有各种问题。。避免采坑
2.1 部署环境介绍
本次测试安装的虚拟机为centos7最小化安装,4G内存,50G硬盘空间(生产自己设定)
[root@qiuyuetao ~]# uname -r
3.10.0-693.el7.x86_64
[root@qiuyuetao ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
2.2 环境基础优化
# 1) 更新yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache #生成缓存
# 2) 关闭防火墙selinux,iptabls
systemctl disable firewalld
systemctl stop firewalld.service
iptables -F
iptables-save
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# 3) 安装python相关包,centos7自带python2.7.5 如果您是6的系统,自行安装python
yum install python-devel mysql-devel
yum install zlib zlib-devel readline-devel sqlite-devel bzip2-devel openssl-devel gdbm-devel libdbi-devel ncurses-libs kernel-devel libxslt-devel libffi-devel python-devel zlib-devel sshpass gcc git -y
######centos 6 安装python过程 7无需安装####
# wget http://mirrors.sohu.com/python/2.7.12/Python-2.7.12.tgz
# tar -xzvf Python-2.7.12.tgz
# cd Python-2.7.12
# ./configure
# make all
# make install
# make clean
# make distclean
# mv /usr/bin/python /usr/bin/python2.6.6
# ln -s /usr/local/bin/python2.7 /usr/bin/python
# vi /usr/bin/yum
将文件头部的
#!/usr/bin/python
改成
#!/usr/bin/python2.6.6
为了不影响 yum 的使用,继续修改 vi /usr/libexec/urlgrabber-ext-down
同样把开头的 Python 改成#! /usr/bin/python2.6.6
三、OpsManage部署
安装过程遇到几次坑,可以看日志进行排错,另外python环境是centos7自带,如果您是其它系统,可以进行安装。
3.1 安装 easy_install
wget --no-check-certificate https://pypi.python.org/packages/f7/94/eee867605a99ac113c4108534ad7c292ed48bf1d06dfe7b63daa51e49987/setuptools-28.0.0.tar.gz#md5=9b23df90e1510c7353a5cf07873dcd22
tar -xzvf setuptools-28.0.0.tar.gz
cd setuptools-28.0.0
python setup.py install
3.2 安装 pip
wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz -O pip-1.5.5.tar.gz
###由于网络原因,如果下载失败,请到QQ群共享 搜索 "pip" 即可
tar -xzvf pip-1.5.5.tar.gz
cd pip-1.5.5/
python setup.py install
pip install -U pip
3.3 安装模块
cd /mnt/
git clone https://github.com/welliamcao/OpsManage.git
cd /mnt/OpsManage/
pip install -r requirements.txt #注意,如果出现错误不要跳过,请根据错误信息尝试解决----此处报错,我遇到的错误后,更新了一下 pip
pip install --upgrade pip #然后再执行上边的命令
easy_install paramiko
四、安装 Redis
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -xzvf redis-3.2.8.tar.gz
cd redis-3.2.8
make
make install
修改配置文件
vim redis.conf
[root@node02 redis-3.2.8]# egrep "^bind|^logfile|^daemon|^loglevel" redis.conf
bind 192.168.56.12 127.0.0.1 #服务器IP
daemonize yes #开启后台模式
loglevel warning #调整日志等级
logfile "/var/log/redis.log" #日志文件路径
cd ../
mv redis-3.2.8 /usr/local/redis
/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
五、配置MySQL
yum install mariadb-server mariadb
[root@node02 OpsManage]# mysql -V
mysql Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1
# vim /etc/my.cnf
删除所有,然后添加下边的两段。
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
socket=/var/lib/mysql/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
创建数据库
mysql -uroot -p
mysql> create database opsmanage;
mysql> grant all privileges on opsmanage.* to root@'%' identified by '123321'; #设置root密码
mysql> grant all privileges on opsmanage.* to root@'192.168.56.12' identified by '123321'; #192.168.56.12是本机IP地址
mysql>\q
systemctl restart mariadb.service
六、配置 OpsManage
配置文件可以去QQ群共享
下载,搜索 settings
即可。
# cd /mnt/OpsManage/OpsManage
# vim settings.py #需要修改配置
25 BROKER_URL = 'redis://192.168.56.12:6379/4' #redisIP地址及端口配置
60 REDSI_KWARGS_LPUSH = {"host":'192.168.56.12','port':6379,'db':3} #redis配置修改
158 DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
'NAME':'opsmanage', ##库的名字
'USER':'root', ##数据库用户
'PASSWORD':'123321', ##访问数据库的密码,注意权限的分配
'HOST':'192.168.56.12' #数据库地址
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
189 SFTP_CONF = {
'port':22,
'username':'root',
'password':'123456',
'timeout':30
} #修改成能sftp登陆OpsManage的账户
如果加入端口报错,可以删除
七、生成数据表与管理员账户
cd /mnt/OpsManage/
python manage.py makemigrations OpsManage
python manage.py makemigrations wiki
python manage.py makemigrations orders
python manage.py makemigrations filemanage
python manage.py migrate
python manage.py createsuperuser #创建登陆密码
八、启动部署平台
cd /mnt/OpsManage/
nohup python manage.py runserver 0.0.0.0:8000 &
关于后台执行:linux后台运行和关闭、查看后台任务(进程管理)
九、配置Celery异步任务系统
# echo_supervisord_conf > /etc/supervisord.conf
# export PYTHONOPTIMIZE=1
# vim /etc/supervisord.conf
最后添加
[program:celery-worker-default]
command=/usr/bin/python manage.py celery worker --loglevel=info -E -Q default
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-worker-default.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1
[program:celery-worker-ansible]
command=/usr/bin/python manage.py celery worker --loglevel=info -E -Q ansible
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-worker-ansible.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1
[program:celery-beat]
command=/usr/bin/python manage.py celery beat
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-beat.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1
[program:celery-cam]
command=/usr/bin/python manage.py celerycam
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-celerycam.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1
启动celery
/usr/bin/supervisord -c /etc/supervisord.conf #注意centos7上路径
supervisorctl status #要检查是否都是running状态
十、登录测试
浏览器 http://服务器IP:8000
输入上面创建的用户密码 root 123321
十一、问题总结
问题原因:是因为mariadb对于安全问题与msyql下权限有所不同
,如果您用的mysql可能不会出现问题,mariadb在同时授权情况下,单个IP高于%授权。
处理问题:
1,添加本地dns cat /etc/hosts
192.168.56.12 node02
2,添加Mysql root用户 IP授权 % 给root失效了
MariaDB [(none)]> grant all privileges on opsmanage.* to root@'192.168.56.12' identified by '123321';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#通过下面命令检查,授权是否生效
[root@node02 OpsManage]# mysql -h 192.168.56.12 -uroot -p123321 -e "show databases;"
+--------------------+
| Database |
+--------------------+
| information_schema |
| opsmanage |
| test |
+--------------------+
#测试通过后,重新进行第七步,即可。
感谢群友wwbhl 对此问题的反馈记录如下:
项目源码https://github.com/welliamcao/OpsManage 还有docker 部署方案
更多精彩:Devops相关文章
Docker 一键部署
一,克隆代码: v3 分支
cd /mnt
git clone https://github.com/welliamcao/OpsManage.git
二,构建镜像
cd OpsManage/docker
sh build.sh
## 如果执行失败,可能 cp ../requirements.txt ./
三,修改存储相关配置
[db]
$ vim conf/opsmanage.ini
修改下面配置
[db]
engine = mysql
host = db #必须改成db
port = 3306
user = your_account
password = your_password
database = opsmanage
[redis]
host = redis #必须改成redis
port = 6379
password =
ansible_db = 3
celery_db = 4
default_db = 0
[amqp]
host = rabbitmq #必须改成rabbitmq
port = 5672
user = guest
password = guest
其他配置视自己情况修改,如果没有可以设置enable = false
四,修改docker配置
$ cd /mnt/OpsManage/docker
$ vim docker-compose.yml
修改里面的db, ops_web两个service下面的变量值
MYSQL_USER="your_account"
MYSQL_PASSWORD="your_password"
MYSQL_ROOT_PASSWORD="your_root_password"
$ vim /mnt/OpsManage/OpsManage/settings.py文件里面的DEBUG设置为DEBUG = True
$ docker-compose up -d
五,浏览器访问http://ip:8000默认帐户密码是admin / admin
http://192.168.1.168:8000/
- QQ精品交流群
-
- 微信公众号
-
2018年9月18日 下午6:27 沙发
真棒
2018年9月19日 上午11:15 1层
@嫡女 谢谢,我会加油的
2019年12月3日 下午3:34 板凳
脑图有啥合适的工具推荐么?
感谢
2019年12月3日 下午3:36 1层
@demo https://aonaotu.com 凹凸图 ,亿图,或者visio