cmdb-资产管理

cmdb-资产管理


1、新建一个app(资产管理的)

python manage.py startapp asset




新建modles.py(数据表)


1、python manage.py makemigrations  #看是否有数据更新

2、python manage.py migrate   #生成表


3、

新建数据库(当执行python manage.py migrate(自动创建生产数据表))

定义了

自动获取:

name(主机名)、ip、mac地址、os系统、arch(架构,64还是32位)

内存、cpu、磁盘


sn号

user(负责人)

remark(备注)

purchase_time(服务器采购时间)

over_insurance_time(服务器过保时间)


created_time 添加时间(第一次添加到数据库的时间)

last_time 最后更新时间 这个是自己修改后,然后更新的时间



4、新建一个自定义的命令

在asset下新建一个management的包(带有__init__.py),在management目录下新建一个commands的包(带有__init__.py)

cmdb/asset/management/commands/collect_host.py


必须得带有Command、handle固定格式

from django.core.management.base import BaseCommand, CommandError


class Command(BaseCommand):

    def handle(self, *args, **options):

        print('hello, django!')


collect_host.py:获取主机信息,然后保存到数据库中


5、多个任务则写多个elif (collect_host则是个函数)

def v2_runner_on_ok(self, result, **kwargs):

        if result.task_name == 'collect_host':

            self.collect_host(result._result)

写ansible的playbook,执行setup 功能 

play_source =  {

                'name' : "cmdb",

                'hosts' : 'all',

                'gather_facts' : 'no',

                'tasks' : [

                    {

                      'name' : 'collect_host',

                      'setup' : ''

                    }

                 ]

            }

主机信息:在当前目录下的 etc/hosts 里面

inventory = InventoryManager(loader=loader, sources=os.path.join(settings.BASE_DIR, 'etc', 'hosts'))

[root@test-01 etc]# cat hosts 

localhost ansible_connection=local

#test ansible_connection=smart ansible_host=192.168.1.69 ansible_user=root ansible_ssh_pass=123456

test-03

test-04

test-05


执行:python manage.py collect_host (自定义的)

执行成功后,到数据库查看是否有数据


2、开始写index.html


可以先写一个模板base.html,然后继承它

{% extends "base.html" %} {#继承base.html的模板#}

{% block title %}资产管理{% endblock %}{#标题#}


jQuery('#form-view').find('[name=name]').val(result['result']['name']);

jQuery('#form-view').find('[name=id]').val(result['result']['id']);

jQuery('#form-view').find('[name=remark]').val(result['result']['remark']);

{#    <input type="hidden" class="form-control" name="id" value=""/>,找到name=id(find('[name=id]')),value= result['result']['id']#}



3、这个是获取id=form-view 中的字典元素 {'id':1,'name':2}

var data = jQuery('#form-view').serializeArray();


4、/*刷新table*/ 这个只是刷新当前页面的

    table.ajax.reload(null, false);


jQuery.get 如果ajax请求的是get,则访问路径会带上token地址,post 则不会




猜你喜欢

转载自blog.51cto.com/jacksoner/2174257