======================================

https://github.com/open-cmdb/cmdb

open-cmdb

知乎链接

https://zhuanlan.zhihu.com/p/34191320

1
2
3
4
5
6
7
8
9
10
11
# 这样 启动一个 mysql 数据库
# 设置mysql存储数据的路径,我这里本地是 /work/work/cmdb/mysql

docker run --name cmdb-db -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=cmdbcmdb -v /work/work/cmdb/mysql:/var/lib/mysql mysql:5.7.21

mysql -h $DB_HOST -P $DB_PORT -u$DB_USERNAME -p$DB_PASSWORD -e "create database if not exists $DB_NAME default character set utf8;"
mysql -h $DB_HOST -P $DB_PORT -u$DB_USERNAME -p$DB_PASSWORD $DB_NAME < /opt/cmdb/tools/database/cmdb.sql

docker run --name myadmin -d -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin/phpmyadmin


1
2
3
4
5
6

# 启动 es 实例
docker run --name cmdb-es -d -p 9200:9200 -p 9300:9300 elasticsearch:7.14.0

docker run --name cmdb-es -d -p 9200:9200 -p 9300:9300 -p 5601:5601 -e "discovery.type=single-node" -e "cluster.name=elasticsearch" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.14.0

1
2
3
4
5
6
7
8
9
docker run -d --name cmdb \
--link cmdb-db --link cmdb-es \
-p 80:80 \
-e ENV=PRO -e SITE_URL={} -e DB_HOST=cmdb-db -e DB_PORT=3306 \
-e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb \
-e ELASTICSEARCH_HOSTS=cmdb-es -e EMAIL_HOST={} -e EMAIL_PORT={} \
-e EMAIL_USERNAME={} -e EMAIL_PASSWORD={} mingmingtang/cmdb start

docker run -it --rm --link cmdb-db -e DB_HOST=cmdb-db -e ENV=PRO -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb mingmingtang/cmdb init-db

创建 admin 管理员 账号

1
2
3
4
5
6
 python manage.py cmdb_create_superuser  


此命令来自这个文件
apps/mgmt/management/commands/cmdb_create_superuser.py

Django 对于命令的添加有一套规范,你可以为每个app 指定命令。通俗一点讲,比如在使用manage.py文件执行命令的时候,可以自定制自己的命令,来实现命令的扩充。

1、在app内创建一个management的python目录
2、在management目录里面创建commands的python文件夹
3、在commands文件夹下创建任意py文件,首先对于文件名没什么要求,内部需要定义一个Command类并继承BaseCommand类或其子类。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

from django.core.management.base import BaseCommand
from django.db.utils import IntegrityError

from mgmt.models import User


class Command(BaseCommand):
help = '创建超级用户'

def handle(self, *args, **options):
user = User()
user.username = input("用户名:")
user.name = input("姓名:")
user.set_password(input("密码:"))
user.is_staff = True
user.is_superuser = True
try:
user.save()
except IntegrityError:
print("{} 已存在".format(user.username))
return
print("创建成功")