互聯(lián)科技 行業(yè)網(wǎng)站軟文廣告是什么
注:本文為 “Ansible 管理華為 CE 交換機(jī)” 相關(guān)文章合輯。
使用 CloudEngine - Ansible 批量管理華為 CE 交換機(jī)
wsf535 IP 屬地:貴州
2018.02.05 15:26:05
總體介紹
Ansible 是一個開源的自動化運(yùn)維工具,AnsibleWorks 成立于 2012 年,由自動化工具 Cobbler 及 Func 的開發(fā)者 Michael DeHaan 創(chuàng)建,基于 Python 開發(fā),集合了眾多運(yùn)維工具(puppet、cfengine、chef、func、fabric)的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能。Ansible 能夠安裝在包括 Linux、BSD、Mac OS X 等平臺。
Ansible 的 CloudEngine 模塊是一個開源的,社區(qū)支持的應(yīng)用程序。使用 CloudEngine 模塊,可實(shí)現(xiàn)對華為數(shù)據(jù)中心 CE 系列交換機(jī)的自動化部署和配置。 您可以從 https://github.com/HuaweiSwitch/CloudEngine-Ansible 下載。
CloudEngine-Ansible 環(huán)境安裝:
官方 git 地址:https://github.com/HuaweiSwitch/CloudEngine-Ansible
測試最新版本與 2.3 版本都有點(diǎn)問題,(需要加 export ANSIBLE_HOST_KEY_CHECKING=false 這個參數(shù),不然連接會報錯) 功能正常的是 2.0 版本
以下是在 centos 7 上的安裝:
環(huán)境準(zhǔn)備:
安裝 ansible, 因 2.0 版本支持的 ansible 是 2.2 所以直接安裝 ansible2.2, 通過 pip 方式安裝
安裝 python-devel (不安裝,在安裝 ansible 會報錯)
yum install python-devel
安裝 pip
wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py
pip install ansible==2.2
安裝 ncclient
pip install ncclient
下載安裝 ce-ansible:
下載
wget https://github.com/HuaweiSwitch/CloudEngine-Ansible/archive/v0.2.0.zip
解壓
unzip v0.2.0.zip
cd CloudEngine-Ansible-0.2.0/
sh install.sh
交換機(jī)端的配置:(使用的是 ce5855)
# 配置一個 SSH 用戶aaa
local-user wsf535 password irreversible-cipher $1a$}") FR_EZ!*$q9Y/I (iUOXbg~g!!cLuOe9:-OV=;XA*vD9NQ:tk5$local-user wsf535 service-type sshlocal-user wsf535 level 15
#
ssh user wsf535 authentication-type password
ssh user wsf535 service-type all
ssh authorization-type default aaa
#
user-interface vty 0 4authentication-mode aaaprotocol inbound ssh# 開啟 netconf(關(guān)鍵,不開啟會導(dǎo)致配置命令失敗)snetconf server enable
使用及排錯:
如果 centos 系統(tǒng)沒連接過交換機(jī)會報以下錯
An exception occurred during task execution.
To see the full traceback, use -vvv. The error was: IOError: [Errno 2]
No such file or directory: '/root/.ssh/known_hosts'
解決方法:手動 SSH 連接一下
ssh username@172.16.200.6
執(zhí)行第一條測試命令:
ansible -m ce_command -a "commands='display vlan summary' transport='cli' host=172.16.200.6 port=22 username=wsf535 password=ABC@2017" localhost --connection local
如果成功返回則安裝成功:
localhost | SUCCESS => {"changed": false, "stdout": ["Number of static VLAN: 10\nVLAN ID: 1 16 to 20 22 25 to 26 99 \n\nNumber of dynamic VLAN: 0\nVLAN ID: \n\nNumber of service VLAN: 31\nVLAN ID: 4064 to 4094"], "stdout_lines": [["Number of static VLAN: 10", "VLAN ID: 1 16 to 20 22 25 to 26 99", "", "Number of dynamic VLAN: 0", "VLAN ID:", "", "Number of service VLAN: 31", "VLAN ID: 4064 to 4094"]], "warnings": []
}
使用 playbook
定義主機(jī),我的測試環(huán)境只有這一臺,如果有多臺加到 cloudengine 標(biāo)簽下
cat /etc/ansible/hosts
[all:vars]
ansible_connection='local'
username='wsf535'
password='ABC@2017'
ansible_ssh_port=22
[cloudengine]
172.16.200.6
新建一下 vlan.yml 文件,以下內(nèi)容表示創(chuàng)建 vlan 50
---
- hosts: cloudenginegather_facts: novars:test_vlan: 50tasks: - ce_vlan: vlan_id={{test_vlan}} name="WEB" host={{inventory_hostname}} username={{username}} password={{password}} port={{ansible_ssh_port}}
執(zhí)行操作
ansible-playbook vlan.yml
成功結(jié)果:
最后編輯于 :2018.03.08 17:01:40
使用華為 ansible CE 模塊管理華為交換機(jī)
fengbingjin 于 2020-08-16 02:21:46 發(fā)布
華為 ansible CE 模塊管理華為交換機(jī)
華為自己開源了 CE 交換機(jī) ansible 管理模塊,用 ansible 管理交換機(jī)那是相當(dāng)?shù)姆奖?#xff0c;現(xiàn)在 ansible CE 模塊數(shù)量已經(jīng)到了 60 多個,ansible 腳本已經(jīng)能滿足大部分的自動運(yùn)維管理工作了
測試環(huán)境
-
VMware 虛擬機(jī),ubuntu20.04-lts;
-
華為 ESNP 模擬器,V100R300C00SPC100;
安裝部署
python 配置
ubuntu 虛擬機(jī)安裝部署好后,系統(tǒng)自帶 python3,需要安裝 pip3,再通過 pip3 安裝 ncclient 模塊
apt install python3-pip
pip3 install ncclient
我的虛擬機(jī)上兩條命令就完成 python 的配置,在另外一臺樹莓派上 ansible 腳本沒有運(yùn)行成功,報錯 python 沒有安裝 paramiko 模塊,還有某些依賴包沒有安裝,不一一列舉了,百度一下就能解決
ansible
ansible 安裝配置很簡單,直接用 apt 命令安裝就行,且自帶華為的 CE 模塊,不需要去華為的 Github 上去找源碼安裝,GitHub 上的已經(jīng)三年沒更新,bug 一堆
apt install ansible
配置 ansible 的配置文件 /etc/ansible/ansible.cfg,這里要把 host_key_cheking = False 取消注釋,原因是不注釋掉,如果本機(jī)從來沒有 ssh 登錄交換機(jī),ansible 檢查用戶目錄下.ssh/known_hosts 文件,發(fā)現(xiàn)沒有交換機(jī)的 key 值,不會執(zhí)行命令腳本
/etc/ansible/hosts 文件,配置登錄參數(shù)和交換機(jī)清單
[all:vars]
ansible_connection=local
ansible_ssh_user=huawei
ansible_ssh_pass=Changeme_123
ansible_ssh_port=22
[cloudengine]
192.168.2.10
ansible playbook 腳本測試
腳本文件 ce.yml,測試 ce_interface 模塊,批量打開交換機(jī)的端口
下圖可見 1-9 口原處于 shutdown 狀態(tài)
ce.yml 文件如下,作用是打開 2-9 端口
---
- name: CloudEngine ce_interface testhosts: cloudengineconnection: localgather_facts: novars:cli:host: "{{ inventory_hostname }}"port: "{{ ansible_ssh_port }}"username: "{{ ansible_ssh_user }}"password: "{{ ansible_ssh_pass }}"transport: clitasks:- name: "Admin up interfaces"ce_interface:interface: "{{ item }}"admin_state: upprovider: "{{ cli }}"with_items:- ge1/0/2- ge1/0/3- ge1/0/4- ge1/0/5- ge1/0/6- ge1/0/7- ge1/0/8- ge1/0/9
執(zhí)行 ansible-playbook ce.yml,結(jié)果如下
去交換機(jī)上看結(jié)果,2-9 端口都處于 up 狀態(tài)了
再用 dis c c c 命令查看交換機(jī)配置變更歷史
實(shí)驗(yàn)成功!
Ansible 之管理華為交換機(jī)配置
恒悅 sunsite 于 2021-05-12 15:15:40 發(fā)布
一、需求說明
信息系統(tǒng)日常運(yùn)維中除了服務(wù)器,我們還有很多網(wǎng)絡(luò)設(shè)備,比如路由器、交換機(jī)、防火墻等。雖然從專業(yè)線上分類由主機(jī)工程師、網(wǎng)絡(luò)工程師分別管理,但是在很多小單位可能配置的崗位并不充足,往往是一人身兼數(shù)個角色。很榮幸,Ansible 也支持網(wǎng)絡(luò)設(shè)備的管理,本文介紹如何使用 Ansible 管理華為交換機(jī),目前只支持管理 CE 系列交換機(jī)。
環(huán)境說明:
-
Ansible 主控機(jī)操作系統(tǒng):centos 8.0.1905
-
Ansible 版本:2.9.21
-
python 版本:3.6.13
-
交換機(jī)型號:CE6800
-
交換機(jī)軟件版本:V200R005C10SPC607B607
二、配置步驟
1、查看華為相關(guān)的模塊
如下所示跟華為相關(guān)的模塊有 68 個,均以 ce 開頭
[root@centos8 ~]# ansible-doc -l |grep -i huawei |wc -l
68
[root@centos7 ~]# ansible-doc -l |grep -i huawei
ce_aaa_server Manages AAA server global configuration on HUAWEI CloudEngine switches
ce_aaa_server_host Manages AAA server host configuration on HUAWEI CloudEngine switches
ce_acl Manages base ACL configuration on HUAWEI CloudEngine switches
…
hwc_network_vpc Creates a Huawei Cloud VPC
hwc_smn_topic Creates a resource of SMNTopic in Huaweicloud Cloud
2、使用 ce_command 模塊查看交換機(jī)信息
-
查看交換機(jī)路由信息
使用命令:[root@centos8 ~]# ansible -m ce_command -a “commands=‘display ip routing-table’ transport=‘cli’ host=192.168.200.100 port=22 username=admin1 password=123456” localhost --connection local
執(zhí)行后查看的路由信息如下:
-
查看 vlan 信息
使用命令:[root@centos8 ansible]# ansible -m ce_command -a “commands=‘display vlan sum’ transport=‘cli’ host=192.168.200.100 port=22 username=admin1 password=123456” localhost --connection local
3、配置交換機(jī)組的 inventory 文件
[root@centos8 ansible]# cat switchs
[hw]
192.168.200.100 ansible_ssh_port=22 ansible_ssh_user=admin1 ansible_ssh_pass=123456
4、配置 playbook 文件
創(chuàng)建備份 交換機(jī)配置 的 playbook,備份到目錄 /tmp/backup
[root@centos7 ansible]# vim ce.yml
[root@centos8 ansible]# cat ce.yaml
- name: CE switch command test.hosts: hwconnection: localgather_facts: novars:cli:host: "{{ inventory_hostname }}"port: "{{ ansible_ssh_port }}"username: "{{ ansible_ssh_user }}"password: "{{ ansible_ssh_pass }}"transport: clitasks:- name: configurable backup pathce_config:lines: sysname {{ inventory_hostname }}provider: "{{ cli }}"backup: yesbackup_options:filename: backup.cfgdir_path: /tmp/backup
5、執(zhí)行 playbook 任務(wù)
[root@centos8 ansible]# ansible-playbook -i switchs ce.yaml
三、QA
1、執(zhí)行 ansible-playbook 時報錯 No module named ‘ncclient’
[root@centos8 ansible]# pip3 install ncclient
2、執(zhí)行 playbook 時報錯 "Unable to decode JSON from response to exec_command (**). Received ‘None’.
寫在最后,嘗試了各種 python 版本、操作系統(tǒng)版本都是報這個錯,估計與 eNSP 模擬器 ce6800 有關(guān)。折騰了 3 天了,只能放棄了。直接執(zhí)行是成功的,執(zhí)行 play-book 報錯沒有收到交換機(jī)的任何信息。
Ansible Network 的基本用法,包括配置管理、狀態(tài)采集的教程
玩機(jī)科技社已于 2023-03-31 18:40:28 修改
Ansible Network 是 Ansible 的一個模塊,專門用于管理網(wǎng)絡(luò)設(shè)備,比如交換機(jī)、路由器、防火墻等。使用 Ansible Network,我們可以通過編寫 Ansible Playbook 來實(shí)現(xiàn)自動化的配置管理和狀態(tài)采集。下面將介紹 Ansible Network 的基本用法。
- 安裝 Ansible 和 Ansible Network
首先需要安裝 Ansible 和 Ansible Network。如果已經(jīng)安裝了 Ansible,則可以使用以下命令安裝 Ansible Network:
$ pip install ansible [core,base,netcommon,network]
- 編寫 Ansible Playbook
Ansible Network 的 Playbook 與 Ansible 的普通 Playbook 類似,但是需要指定網(wǎng)絡(luò)設(shè)備的類型和連接方式。下面是一個簡單的 Ansible Network Playbook,用于配置一個 Cisco 交換機(jī)的 VLAN:
---
- name: Configure VLAN on Cisco switchhosts: switchesgather_facts: noconnection: network_clivars:vlan_id: 10vlan_name: test_vlantasks:- name: Create VLANios_vlan:vlan_id: "{{ vlan_id }}"vlan_name: "{{ vlan_name }}"state: present
該 Playbook 包含以下幾個關(guān)鍵部分:
-
hosts
:指定要管理的網(wǎng)絡(luò)設(shè)備,可以使用主機(jī)名或 IP 地址。 -
gather_facts
:關(guān)閉事實(shí)收集,因?yàn)榫W(wǎng)絡(luò)設(shè)備可能無法返回系統(tǒng)信息。 -
connection
:指定連接方式,network_cli
表示使用 SSH 連接到網(wǎng)絡(luò)設(shè)備。 -
vars
:定義變量,這里定義了 VLAN 的 ID 和名稱。 -
tasks
:具體的任務(wù)列表,這里只有一個任務(wù),用于創(chuàng)建 VLAN。
- 運(yùn)行 Ansible Playbook
運(yùn)行 Ansible Network Playbook 與運(yùn)行普通的 Ansible Playbook 類似,只需要使用 ansible-playbook
命令并指定 Playbook 文件即可。例如,運(yùn)行上述 Playbook 可以使用以下命令:
$ ansible-playbook -i inventory.ini playbook.yaml
其中,inventory.ini
是一個 Ansible Inventory 文件,包含要管理的網(wǎng)絡(luò)設(shè)備的列表。
-
狀態(tài)采集
除了配置管理,Ansible Network 還可以用于狀態(tài)采集,例如獲取網(wǎng)絡(luò)設(shè)備的端口狀態(tài)、路由表等信息。下面是一個簡單的 Ansible Network Playbook,用于獲取一個 Cisco 路由器的接口狀態(tài):
---
- name: Collect interface status from Cisco routerhosts: routersgather_facts: noconnection: network_clitasks:- name: Get interface statusios_command:commands:- show interfaces statusregister: result- name: Print interface statusdebug:var: result.stdout_lines
該 Playbook 包含以下幾個關(guān)鍵部分:
-
hosts
:指定要管理的網(wǎng)絡(luò)設(shè)備,可以使用主機(jī)名或 IP 地址。 -
gather_facts
:關(guān)閉事實(shí)收集,因?yàn)榫W(wǎng)絡(luò)設(shè)備可能無法返回系統(tǒng)信息。 -
connection
:指定連接方式,network_cli
表示使用 SSH 連接到網(wǎng)絡(luò)設(shè)備。 -
以下是了解網(wǎng)絡(luò)設(shè)備管理工具 Ansible Network 的基本用法,包括配置管理、狀態(tài)采集的教程:
Ansible Network 是 Ansible 官方提供的一款用于管理網(wǎng)絡(luò)設(shè)備的工具。它基于 Ansible 的核心技術(shù),提供了專門用于管理網(wǎng)絡(luò)設(shè)備的模塊和插件,可以用來自動化配置、部署和管理網(wǎng)絡(luò)設(shè)備。
一、配置管理
-
安裝 Ansible Network
-
在使用 Ansible Network 之前,需要安裝 Ansible 和 Ansible Network??梢酝ㄟ^以下命令安裝:
$ sudo pip install ansible $ sudo pip install ansible-base $ sudo pip install ansible-core $ sudo pip install ansible-network
-
配置 Ansible Inventory
-
Ansible Inventory 是 Ansible 用來管理主機(jī)清單的工具。使用 Ansible Network 時,需要將網(wǎng)絡(luò)設(shè)備的管理 IP 地址加入到 Inventory 中。
可以手動編輯 Inventory 文件,也可以使用動態(tài) Inventory 來自動生成 Inventory 文件。以下是手動編輯 Inventory 文件的示例:
-
[network] 10.0.0.1 10.0.0.2 [network:vars] ansible_network_os=ios ansible_user=admin ansible_password=123456 ansible_connection=network_cli
在 Inventory 文件中,可以定義多個組,每個組中包含多個主機(jī)。同時還可以為每個組和主機(jī)定義變量,以便在后續(xù)的任務(wù)中使用。
在以上示例中,定義了一個名為 network 的組,包含兩個主機(jī) 10.0.0.1 和 10.0.0.2。同時為該組定義了一些變量,如 ansible_network_os 表示網(wǎng)絡(luò)設(shè)備的操作系統(tǒng)為 IOS,ansible_user 表示登錄網(wǎng)絡(luò)設(shè)備的用戶名為 admin,ansible_password 表示登錄密碼為 123456,ansible_connection 表示連接方式為 network_cli。
-
編寫 Ansible Playbook
-
在 Ansible 中,使用 Playbook 來描述一組任務(wù)。以下是一個簡單的 Ansible Playbook 示例,用于將一個名為 config.cfg 的配置文件上傳到網(wǎng)絡(luò)設(shè)備上:
--- - name: upload config filehosts: networktasks:- name: copy config file to network devicenetwork_cli:command_string: "copy tftp://10.0.0.3/config.cfg startup-config"authorize: yesauthorize_password: 123456
以上 Playbook 中,使用 network 組來指定目標(biāo)設(shè)備。在 tasks 中,使用 network_cli 模塊來執(zhí)行命令,將 TFTP 服務(wù)器上的 config.cfg 文件拷貝到目標(biāo)設(shè)備的 startup-config 文件中。其中,authorize 表示在執(zhí)行命令前需要進(jìn)行認(rèn)證,authorize_password 表示認(rèn)證密碼為 123456。
-
執(zhí)行 Ansible Playbook
-
使用以下命令執(zhí)行 Ansible Playbook:
$ ansible-playbook upload_config.yml
執(zhí)行過程中,Ansible 會連接到目標(biāo)設(shè)備,并將 config.cfg 文件上傳到設(shè)備上。執(zhí)行完成后,可以在目標(biāo)設(shè)備上檢查配置文件是否已經(jīng)生效。
via:
-
使用 CloudEngine - Ansible 批量管理華為 CE 交換機(jī) wsf535 IP 屬地:貴州
https://www.jianshu.com/p/b2b3cffa972b -
使用華為 ansible CE 模塊管理華為交換機(jī) fengbingjin 于 2020-08-16 02:21:46 發(fā)布
https://blog.csdn.net/fengbingjin/article/details/108031388 -
Ansible 之管理華為交換機(jī)配置 恒悅 sunsite 于 2021-05-12 15:15:40 發(fā)布
https://blog.csdn.net/carefree2005/article/details/115527288 -
20 了解網(wǎng)絡(luò)設(shè)備管理工具 Ansible Network 的基本用法,包括配置管理、狀態(tài)采集的教程
https://blog.csdn.net/m0_58782029/article/details/129388320 -
HuaweiSwitch/CloudEngine - Ansible
https://github.com/HuaweiSwitch/CloudEngine-Ansible