jumpserver同步騰訊云主機信息

概述

為了方便單位資產的管理,運維部門一般會開發(fā)一套自己的CMDB管理系統(tǒng)磷仰,如果沒有自己開發(fā)袍嬉,那基于jumpserver的二次開發(fā)是一個不錯的選擇。本文就介紹一下如何通過python調用騰訊云SDK實現(xiàn)同步騰訊云主機到jumpserver資產列表灶平。

環(huán)境及開發(fā)前準備

  • python版本:python2.7

  • os 版本:ubuntu 14.04

  • 安裝Python SDK

    pip install tencentcloud-sdk-python
    
  • 獲取SecretIDSecretKey
    使用騰訊云SDK之前需要先獲取其安全憑證伺通,安全憑證即SecretIDSecretKeySecretID用于標識API調用者的身份民逼,SecretKey用于加密簽名字符串和服務器端驗證簽名字符串的密鑰泵殴,二者需要到騰訊云控制臺云申請:控制臺 - 云產品 - 管理工具 - 云API密鑰 - API密鑰管理,點擊“新建密鑰”即可生成SecretIDSecretKey拼苍。

同步qcloud資產

  • 增加url

    url(r'^asset/qcloud_asset_sync/$', qcloud_asset_sync, name='qcloud_asset_sync')
    
  • 資產列表增加 ‘同步qcloud資產’ 按鈕

    <a href="{% url 'qcloud_asset_sync' %}" class="btn btn-sm btn-primary "> 同步qcloud資產 </a>
    
  • 修改view.py

  1. 通過SDK獲取到騰訊云的主機數(shù)據(jù)
  2. 將主機數(shù)據(jù)直接存儲到數(shù)據(jù)庫
獲取騰訊云主機信息

首先要確定自己的主機在哪個地域(即Regin)笑诅,比如:上海调缨,北京,多倫多吆你,硅谷弦叶,其相對應的Region為:ap-shanghaiap-beijing妇多,na-toronto伤哺,na-siliconvalley,其它各Region可以通過查詢地域列表查詢

示例

# -*- coding: utf-8 -*-
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
# 導入對應產品模塊的client models者祖。
from tencentcloud.cvm.v20170312 import cvm_client, models

SecretId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
secretKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Region = 'ap-beijing'
try:
    # 實例化一個認證對象立莉,入參需要傳入騰訊云賬戶secretId,secretKey
    cred = credential.Credential(SecretId, secretKey)

    # 實例化要請求產品(以cvm為例)的client對象
    client = cvm_client.CvmClient(cred, Region)

    # 實例化一個請求對象
    req = models.DescribeInstancesRequest()

    # 通過client對象調用想要訪問的接口七问,需要傳入請求對象
    resp = client.DescribeInstances(req)
    # 輸出json格式的字符串回包
    print resp.to_json_string()

except TencentCloudSDKException as err:
    print err

輸出參數(shù)

參數(shù)名稱 說明
TotalCount 實例個數(shù)
InstanceSet 實例詳細列表
RequestId 唯一請求ID蜓耻,每次請求都會返回

我們主要關注的就是前兩個,可是當你實例超過20個的時候械巡,此時你會發(fā)現(xiàn)返回結果中刹淌,只有20個實例,別的實例去哪里了呢讥耗?這是騰訊云限制單次請求默認只返回20條數(shù)據(jù)有勾,最大值為100,這個是輸出參數(shù)中的一個Limit參數(shù)控制的古程,所以如果我們云服數(shù)量大的話蔼卡,可以按需設置這個參數(shù)

這里假如我有200多臺服務器,要同步到jumpserver籍琳,所以要先獲取云端總的服務器數(shù)量菲宴,計算請求次數(shù),設置limit為100趋急,offset偏移量為0

def get_qcloud_servers():
    SecretId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    secretKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    Region = 'ap-beijing'

    try:
        # 實例化一個認證對象喝峦,入參需要傳入騰訊云賬戶secretId,secretKey
        cred = credential.Credential(SecretId, secretKey)
        # 實例化要請求產品(以cvm為例)的client對象
        client = cvm_client.CvmClient(cred, Region)
        # 實例化一個請求對象
        req = models.DescribeInstancesRequest()
        # 通過client對象調用想要訪問的接口呜达,需要傳入請求對象
        resp = client.DescribeInstances(req)
        # 輸出json格式的字符串回包
        totalServer = json.loads(resp.to_json_string())['TotalCount']
    except TencentCloudSDKException as err:
        print err

    offset, loop = (0, 0)
    servers = []
    while loop < totalServer / 100 + 1:
        module = 'cvm'
        action = 'DescribeInstances'
        config = {
            'Region': Region,
            'secretId': SecretId,
            'secretKey': secretKey
        }

        action_params = {
            'limit': 100,
            'offset': offset
        }

        loop += 1
        offset += 100

        try:
            service = QcloudApi(module, config)
            cvms = json.loads(service.call(action, action_params))['instanceSet']
            servers_loop = [cvm for cvm in cvms]
            servers.extend(servers_loop)
        except Exception as e:
            import traceback
            print 'traceback.format_exc():\n%s' % traceback.format_exc()

    return servers
將主機信息添加到數(shù)據(jù)庫
def qcloud_asset_sync(request):
    servers = get_qcloud_servers()
    qcloud_server_ips = []
    for server in servers:
        qcloud_server_ips.append(server['lanIp'])
        s = Asset.objects.filter(ip=server['lanIp'])
        if s:
            s.update(hostname=server['instanceName'],system_type=server['os'],cpu=server['cpu'],memory=server['mem'],disk=server['diskInfo'].get('storageSize',0),port=22)
        else:
            Asset(hostname=server['instanceName'],ip=server['lanIp'],system_type=server['os'],cpu=server['cpu'],memory=server['mem'],disk=server['diskInfo'].get('storageSize',0),port=22).save()

    return HttpResponseRedirect(reverse('asset_list'))

效果
最終功能實現(xiàn)就是通過點擊同步qcloud資產按鈕實現(xiàn)把騰訊云上的資產同步到jumpsercer上

page.jpg

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末谣蠢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子查近,更是在濱河造成了極大的恐慌眉踱,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霜威,死亡現(xiàn)場離奇詭異谈喳,居然都是意外死亡,警方通過查閱死者的電腦和手機戈泼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門婿禽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赏僧,“玉大人,你說我怎么就攤上這事扭倾〉砹悖” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵膛壹,是天一觀的道長驾中。 經常有香客問我,道長模聋,這世上最難降的妖魔是什么肩民? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮链方,結果婚禮上此改,老公的妹妹穿的比我還像新娘。我一直安慰自己侄柔,他們只是感情好,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布占调。 她就那樣靜靜地躺著暂题,像睡著了一般。 火紅的嫁衣襯著肌膚如雪究珊。 梳的紋絲不亂的頭發(fā)上薪者,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機與錄音剿涮,去河邊找鬼言津。 笑死,一個胖子當著我的面吹牛取试,可吹牛的內容都是我干的悬槽。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼瞬浓,長吁一口氣:“原來是場噩夢啊……” “哼初婆!你這毒婦竟也來了?” 一聲冷哼從身側響起猿棉,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤磅叛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后萨赁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弊琴,經...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年杖爽,在試婚紗的時候發(fā)現(xiàn)自己被綠了敲董。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紫皇。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖臣缀,靈堂內的尸體忽然破棺而出坝橡,到底是詐尸還是另有隱情,我是刑警寧澤精置,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布计寇,位于F島的核電站,受9級特大地震影響脂倦,放射性物質發(fā)生泄漏番宁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一赖阻、第九天 我趴在偏房一處隱蔽的房頂上張望蝶押。 院中可真熱鬧,春花似錦火欧、人聲如沸棋电。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赶盔。三九已至,卻和暖如春榆浓,著一層夾襖步出監(jiān)牢的瞬間于未,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工陡鹃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留烘浦,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓萍鲸,卻偏偏與公主長得像闷叉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脊阴,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內容

  • 說到zblog插件片习,首先肯定要有zblog,先下載安裝zblog蹬叭,在管理后臺登陸上開發(fā)者賬號(確保開發(fā)者模式為開...
    ZixuLiao閱讀 921評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理藕咏,服務發(fā)現(xiàn),斷路器秽五,智...
    卡卡羅2017閱讀 134,716評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,332評論 25 707
  • 何去何從孽查,真想一走了之,不想待下去坦喘,前怕狼后怕虎盲再,不知道該怎么辦西设,該如何繼續(xù)走下去
    我是朵靨閱讀 171評論 0 0
  • 首先說下我們的項目需求,我們的IAP內購是非消耗型產品答朋。 實現(xiàn)原理:下訂單的時候就把訂單和產品id系列化保存起來贷揽,...
    Gu_Liang閱讀 2,347評論 5 2