溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Ansible運(yùn)維Cisco設(shè)備

發(fā)布時(shí)間:2020-02-14 11:11:06 來(lái)源:網(wǎng)絡(luò) 閱讀:799 作者:摸網(wǎng)校尉 欄目:網(wǎng)絡(luò)管理

一、Ansible簡(jiǎn)介

????????ansible是新出現(xiàn)的自動(dòng)化運(yùn)維工具,基于Python開(kāi)發(fā),集合了眾多運(yùn)維工具(puppet、chef、func、fabric)的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能。ansible是基于 paramiko 開(kāi)發(fā)的,并且基于模塊化工作,本身沒(méi)有批量部署的能力。真正具有批量部署的是ansible所運(yùn)行的模塊,ansible只是提供一種框架。ansible不需要在遠(yuǎn)程主機(jī)上安裝client/agents,因?yàn)樗鼈兪腔趕sh來(lái)和遠(yuǎn)程主機(jī)通訊的。ansible目前已經(jīng)已經(jīng)被紅帽官方收購(gòu),是自動(dòng)化運(yùn)維工具中大家認(rèn)可度最高的,并且上手容易,學(xué)習(xí)簡(jiǎn)單。是每位運(yùn)維工程師必須掌握的技能之一。


????????特點(diǎn):


    1. 1、部署簡(jiǎn)單,只需在主控端部署Ansible環(huán)境,被控端無(wú)需做任何操作;

    2. 2、默認(rèn)使用SSH協(xié)議對(duì)設(shè)備進(jìn)行管理;

    3. 3、有大量常規(guī)運(yùn)維操作模塊,可實(shí)現(xiàn)日常絕大部分操作;

    4. 4、配置簡(jiǎn)單、功能強(qiáng)大、擴(kuò)展性強(qiáng);

    5. 5、支持API及自定義模塊,可通過(guò)Python輕松擴(kuò)展;

    6. 6、通過(guò)Playbooks來(lái)定制強(qiáng)大的配置、狀態(tài)管理;

    7. 7、輕量級(jí),無(wú)需在客戶端安裝agent,更新時(shí),只需在操作機(jī)上進(jìn)行一次更新即可;

    8. 8、提供一個(gè)功能強(qiáng)大、操作性強(qiáng)的Web管理界面和REST API接口——AWX平臺(tái)。




????????架構(gòu):

Ansible運(yùn)維Cisco設(shè)備

????Ansible:Ansible核心程序。
????HostInventory:記錄由Ansible管理的主機(jī)信息,包括端口、密碼、ip等。
????Playbooks:“劇本”YAML格式文件,多個(gè)任務(wù)定義在一個(gè)文件中,定義主機(jī)需要調(diào)用哪些模塊來(lái)完成的功能。
????CoreModules:核心模塊,主要操作是通過(guò)調(diào)用核心模塊來(lái)完成管理任務(wù)。
????CustomModules:自定義模塊,完成核心模塊無(wú)法完成的功能,支持多種語(yǔ)言。
????ConnectionPlugins:連接插件,Ansible和Host通信使用。

????


????運(yùn)行過(guò)程:


??????Ansible 系統(tǒng)由控制主機(jī)對(duì)被管節(jié)點(diǎn)的操作方式可分為兩類(lèi),即adhoc和playbook:

  • ad-hoc模式(點(diǎn)對(duì)點(diǎn)模式)
      使用單個(gè)模塊,支持批量執(zhí)行單條命令。ad-hoc 命令是一種可以快速輸入的命令,而且不需要保存起來(lái)的命令。就相當(dāng)于bash中的一句話shell。

  • playbook模式(劇本模式)
      是Ansible主要管理方式,也是Ansible功能強(qiáng)大的關(guān)鍵所在。playbook通過(guò)多個(gè)task集合完成一類(lèi)功能,如Web服務(wù)的安裝部署、數(shù)據(jù)庫(kù)服務(wù)器的批量備份等。可以簡(jiǎn)單地把playbook理解為通過(guò)組合多條ad-hoc操作的配置文件。

Ansible運(yùn)維Cisco設(shè)備

????????命令執(zhí)行過(guò)程:

????? ?? ? ?1、加載自己的配置文件,默認(rèn)/etc/ansible/ansible.cfg;


    1. 2、查找對(duì)應(yīng)的主機(jī)配置文件,找到要執(zhí)行的主機(jī)或者組;

    2. 3、加載自己對(duì)應(yīng)的模塊文件,如 command;

    3. 4、通過(guò)ansible將模塊或命令生成對(duì)應(yīng)的臨時(shí)py文件(python腳本), 并將該文件傳輸至遠(yuǎn)程服務(wù)器;

    4. 5、對(duì)應(yīng)執(zhí)行用戶的家目錄的.ansible/tmp/XXX/XXX.PY文件;

    5. 6、給文件 +x 執(zhí)行權(quán)限;

    6. 7、執(zhí)行并返回結(jié)果;

    7. 8、刪除臨時(shí)py文件,sleep 0退出;



二、Ansible安裝

????Ansible 能夠安裝到 Linux、BSD、Mac OS X 等平臺(tái),Python 版本最低要求為 2.6。

? ? 此次安裝在Centos 7環(huán)境下安裝:

? ?使用命令: yum install ansible -y 安裝即可。

? ??

????注:若無(wú)法安裝,請(qǐng)更換Yum源倉(cāng)庫(kù)再次嘗試安裝。


三、Cisco交換機(jī)配置

?????Cisco交換機(jī)需要配置SSH登錄.具體配置如下:


? ???ip domain-name?wlxbc.cn ???????????????????配置域名

? ? ?username cisco password 15 cisco??????創(chuàng)建ssh用戶

? ? ?crypto key generate rsa? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建密鑰

? ? ?ip ssh version 2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?設(shè)置SSH 版本

? ? ?line vty 0 4? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? VTY配置

? ? ?????transport input ssh? ? ? ? ? ? ? ? ? ? ? ? ?只允許SSH協(xié)議傳輸

? ????? ?login local? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?本地登錄


四、Ansible運(yùn)維操作


????????安裝完后正式來(lái)使用,ansible默認(rèn)配置文件路徑為:/etc/ansible;

????????修改ansible配置文件,將一下行注釋去掉

????????host_key_checking = False

????????這一行的意思是,在ssh登錄的時(shí)候,是檢查known_hosts文件中是否有該IP的密鑰。默認(rèn)是檢查的,如果不存在,那么就登錄失敗,這時(shí)候可以通過(guò)手動(dòng)ssh一次,ssh會(huì)自動(dòng)將密鑰 添加入known_hosts文件中,或者通過(guò)取消注釋?zhuān)蛊洳粰z查文件。

? ? ? ? 設(shè)置完成后保存。


????????清空并配置hosts文件echo > hosts

????????[cisco] ?# 組名

????????192.168.108.251 # 組成員?

????????192.168.108.252?

????????192.168.108.253?

????????[centos]

?????? ?192.168.100.225

????????ansible 192.168.100.225 -m ping -u root -k? ?測(cè)試ansible命令是否可達(dá)

????????

????????Ansible常用命令:

????????ansible --list-host all ? ? 查詢所有主機(jī)

????????ansible IP地址 -m raw -a "show ip int brief" -u admin -k ?執(zhí)行單個(gè)主機(jī)

????????ansible cisco -m raw -a "show clock" -u admin -k ?執(zhí)行某個(gè)組

????????ansible all -m raw -a "show clock" -u admin -k ?執(zhí)行所有組 ?

????????ansible-playbook arp.yml -u admin -k ? ? ?執(zhí)行劇本

????????ansible-playbook arp.yml -u admin -k | grep 'ok:\|8001' ? 執(zhí)行劇本,匹配過(guò)濾


???
????????劇本:網(wǎng)絡(luò)模塊地址:https://docs.ansible.com/ansible/latest/modules/list_of_network_modules.html


????????參考配置:


????????查詢ARP:劇本

---

- name: Get ARP information

?hosts: cisco

?gather_facts: false


?tasks:

? ?- name: show arp

? ? ?raw: "show arp"


? ? ?register: print_output


- ?debug: var=print_output.stdout_lines

多條命令:

---

- name: run multiple commands on remote devices

?hosts: all

?gather_facts: false

?connection: local


?tasks:

? - name: show ver and show ip int brief

? ? ios_command:

? ? ? commands:

? ? ? ? - show clock

? ? ? ? - show ip int brief


? ? register: print_output


? - debug: var=print_output.stdout_lines





配置交換機(jī):

---

- name: enable ospf

?hosts: all

?gather_facts: false

?connection: local


?tasks:

? ?- name: enable ospf

? ? ?ios_config:

? ? ? ?authorize: yes

? ? ? ?parents: router ospf 2

? ? ? ?lines:

? ? ? ? ?- network 0.0.0.0 255.255.255.255 area 0


? ? ?register: print_output


? ?- ?debug: var=print_output




向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI