Nornir之表格資產(chǎn)管理插件

設備管理模塊在任何一個自動化框架中都是必備的欺殿,原生的Nornir采用YAML文件存儲設備信息烟号,YAML文件是序列化的數(shù)據(jù)結(jié)構(gòu)蒋困,編寫非常繁瑣卷中,因為是樹形結(jié)構(gòu)矛双,如果有幾十臺甚至上百臺設備,yaml文件就會變得十分臃腫蟆豫,難以閱讀议忽。為了簡化和降低設備信息維護的難度,本文對Nornir的設備管理插件進行了重新設計十减,從表格中把資產(chǎn)載入inventory,每條記錄就是一臺設備栈幸,不僅容易維護,還可以遷移進數(shù)據(jù)庫帮辟,有了很大的靈活性和可移植性速址。

??首先來講一下思路,其實思路很簡單由驹,這實際上就是一個簡單的逆向工程加上官方手冊的簡單指導芍锚。我們先熟悉一下SimpleInventory類的代碼,然后找到重點荔棉,切入要點闹炉,邊寫,邊測润樱,邊改渣触。


原生類

我們觀察源碼發(fā)現(xiàn),這個類有兩個方法:
1壹若、第一個是初始化init方法嗅钻,是指定了三種yaml文件的路徑,然后加載成為一個path對象店展;
2养篓、第二個是load方法,返回一個Inventory對象赂蕴,這個對象由三個重要的參數(shù)構(gòu)建柳弄,分別是hosts,groups和defaults概说。groups和defaults個人感覺用處不是很大碧注,網(wǎng)上的很多案例把一些路由域、位置糖赔、廠商等信息放入groups中萍丐,按group批量定制一些參數(shù)、創(chuàng)建一些配置放典,在這里我把這些參數(shù)都整合進了hosts中逝变。
??通過以上分析基茵,我們主要從init和load方法入手:
1、利用init方法將設備字段進行整形壳影,初始化一個參數(shù)devices拱层,這個參數(shù)是一個字典列表,最終構(gòu)建了一個self.devices,用于load方法,其中connection_options包含了一個global_delay_factor延遲因子和secret密碼态贤,時間因子主要用于調(diào)整超時時間的場景舱呻,在實際場景中,有些網(wǎng)絡設備距離比較遠悠汽,有的網(wǎng)絡設備性能比較差箱吕,就會引起通信耗時較長,執(zhí)行命令耗時較長的情況柿冲,導致netmiko超時茬高,這個時候我們就可以調(diào)整延遲因子,延長超時時間假抄,secret密碼主要是用于cisco設備的特權密碼怎栽,直接上源碼:

 def __init__(
            self,
            devices: List[dict],
    ) -> None:
        """
        根據(jù)devices的字典列表加載所有的網(wǎng)絡設備
        :param devices:
        網(wǎng)絡設備信息字典列表數(shù)據(jù)結(jié)構(gòu)如下:
        [{'hostsname':'192.168.1.1','username':'admin','password':'admin','port':22,'platform':'cisco_ios',
        'device_type':'router'}]
        """
        host_info = ['hostname', 'username', 'password', 'port', 'platform', 'ip']
        reshape_devices = []
        for device in devices:
            reshape_device = {
                'data': {},
            }
            for k, v in device.items():
                if k in host_info:
                    reshape_device[k] = v
                else:
                    reshape_device['data'][k] = v
            reshape_device['connection_options'] = {
                'netmiko': {'extras': {'global_delay_factor': device.get('global_delay_factor'),
                                       'secret': device.get('secret')}}}
            reshape_devices.append(reshape_device)
        self.devices = reshape_devices

經(jīng)過初始化后的設備信息長這個樣子:

host_info = {
    'hostname': '192.168.1.1',
    'username': 'admin',
    'password': 'admin',
    # 其他字段省略
    'connection_options': {
        'netmiko': {
            'extras': {
                'global_delay_factor': 1,
                'secret': 'admin'
            }
        }
    }
}

2、從上面的分析看宿饱,在load方法中熏瞄,groups和defaults參數(shù)用處不大,因此可以刪除相關代碼谬以,化繁為簡强饮,重點關注hosts參數(shù),原生的代碼將yaml文件轉(zhuǎn)換成字典为黎,定制代碼直接使用初始化后的字典邮丰;


Snipaste_2022-06-01_16-59-03.png

3、注冊我們定制的插件
完成inventory的插件定制后铭乾,還需要把插件注冊到nornir才可以使用


Snipaste_2022-06-01_17-13-12.png
小結(jié)

這篇文章主要介紹了nornir表格資產(chǎn)插件的定制過程剪廉,該插件輔助《IP地址資源管理系統(tǒng)》(另一篇文章有介紹)使用,與數(shù)據(jù)庫對接炕檩。為了方便使用和學習斗蒋,我另外寫了一個demo,使用excel表格管理設備笛质,定制了一個抓取設備ARP表的任務吹泡,格式化寫入excel表格,源碼地址:https://gitee.com/mobiledj/net-dev-ops.git,運行源碼需要安裝以下庫:

pip install nornir
pip install netmiko
pip install nornir_netmiko
pip install nonir_utils
pip install pandas
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末经瓷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子洞难,更是在濱河造成了極大的恐慌舆吮,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異色冀,居然都是意外死亡潭袱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門锋恬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屯换,“玉大人,你說我怎么就攤上這事与学。” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵恨诱,是天一觀的道長室叉。 經(jīng)常有香客問我,道長卵佛,這世上最難降的妖魔是什么杨赤? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮截汪,結(jié)果婚禮上疾牲,老公的妹妹穿的比我還像新娘。我一直安慰自己衙解,他們只是感情好阳柔,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丢郊,像睡著了一般盔沫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枫匾,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天架诞,我揣著相機與錄音,去河邊找鬼干茉。 笑死谴忧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的角虫。 我是一名探鬼主播沾谓,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼戳鹅!你這毒婦竟也來了均驶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤枫虏,失蹤者是張志新(化名)和其女友劉穎妇穴,沒想到半個月后爬虱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡腾它,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年跑筝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞒滴。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡曲梗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妓忍,到底是詐尸還是另有隱情虏两,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布单默,位于F島的核電站碘举,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搁廓。R本人自食惡果不足惜引颈,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望境蜕。 院中可真熱鬧蝙场,春花似錦、人聲如沸粱年。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽台诗。三九已至完箩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拉队,已是汗流浹背弊知。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粱快,地道東北人秩彤。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像事哭,于是被迫代替她去往敵國和親漫雷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Ansible 不完全手冊 Ansible 認識 andsible 最早是 厄休拉*勒古恩 在 1966 年的小說...
    花澤菠菜xqc閱讀 930評論 0 2
  • Ansible 認識 andsible 最早是 厄休拉*勒古恩 在 1966 年的小說 《羅卡農(nóng)的星球》中創(chuàng)造了 ...
    不達目的不改名_e76c閱讀 1,344評論 0 1
  • Ansible 認識 andsible 最早是 厄休拉*勒古恩 在 1966 年的小說 《羅卡農(nóng)的星球》中創(chuàng)造了 ...
    Lengfin閱讀 832評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理鳍咱,服務發(fā)現(xiàn)降盹,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • Ansible 是一個開源的服務器配置管理工具谤辜。部署 Ansible 的主控端(中控機)通過 SSH 協(xié)議澎现,對同一...
    張毅SOHO閱讀 1,294評論 0 5