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 則不會




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章