2019年10月31日 星期四

S小魚仔S Ansible 開發 H3C (華三) 交換機

很多初學 ansible 的都會誤以為,ansible 是 ssh 到目的主機上,然後直接運行 cli 命令,其實並不是,ansible 對管理網路設備雖然不需要安裝 agent,但是需要其擁有「python」。「ansible」主機會把需要執行的「module」(完成特定功能的python程式) 傳送到目的主機去執行,因此我們其實需要一個「moudle」能完成「ssh」到網路設備上並下發指定命令的功能。Ansible Host 安裝 Python 我們完全可以透過「Ansible Host」下發指令,這樣就不需要「ansible」通過「paramiko」傳輸「module」,只需要在設定檔(vi /etc/ansible/hosts)中指定「connection」為「local」即可。
PS. H3C 網路設備必須啟用「ssh」登入

1. 修改「vi /etc/ansible/hosts」設定「交換機」IP  為 local


2. 編輯「vi /etc/ansible/ansible.cfg」啟用「library」模組

3. 建立「my_modules」資料夾

mkdir -p /usr/share/my_modules/

4. 下載 GitHub 作者「luffycjf」( network_automation ) 開發「模塊

cd /opt ; git clone https://github.com/luffycjf/network_automation

5. 搬移「ssh_command.py」模塊,放到「ansible library」位置

mv /opt/network_automation/module/ssh_command.py /usr/share/my_modules/

6. 編寫「ansible - playbook
PS. Playbook 採用 yml 描述語言檔,縮排位置一定要對齊
- hosts: localhost
  gather_facts: no
  vars:
   - ssh_port: 22                    #ssh端口号
     ssh_username: "test"            #设备用户名
     ssh_password: "test2019"        #设备密码
     device_address: "172.21.6.2"    #设备地址
     command_interval: 0.5           #命令之间等待的最小间隔,默认0.5s,可以不改
  tasks:
    #     command: ''                                   #指定操作的命令。
    #     configfile: '/opt/h3c_switch/h3c_config.txt'  #指定操作「h3c」配置腳本。
    - name: display version
      ssh_command:
        port: "{{ssh_port}}"
        address: "{{device_address}}"
        username: "{{ssh_username}}"
        password: "{{ssh_password}}"
        command_interval: 0.1
        command: 'display ip interface brief'
        configfile: ''
      register: h3c_log
 
    - name: print h3c_log
      debug:
        var: h3c_log.stdout_lines
      with_items: h3c_log.results
7. 執行結果


參考資料
Cheng's Blog」-「网络设备配置建模 Ⅰ
Ansible Web Site」-「Ansible for Network Automation 

2019年10月28日 星期一

S小魚仔S 華為 eNSP 模擬器 配置 「SSH」

由於專案關係會利用「ansible」開發「華為」交換機,但是又沒有多餘經費購買「硬件」,這時候找到「eNSP」華為網路設備模擬器,「eNSP」模擬器好處是可以橋接「實體」網路環境,由於「eNSP」模擬器已經沒有投入後續開發,建議最佳系統環境「Windows 7」,可以使用「vmware workstation」模擬系統,進行安裝配置,安裝「eNSP」過程省略 ( 無腦安裝「下一步」到底就可以了 )。

1. 如何配置「eNSP」橋接「實體網路



這裡需要配置「Cloud」( inbount 和 outbound 介面卡 )

配置「inbount

配置「outbound

映射 ( mapping )「inbount」與「outbound

接著拉取「路由」設備
PS.建議不要使用太舊設備型號,因「eNSP」模擬器 使用太舊設備型號指令有問題。

工具列欄位「顯示」端口名稱

使用「Auto」網路線連接

啟用「路由器

2. 如何配置「路由器」SSH 協議

2.1 配置「SSH」協議之前必須要有 IP Address 否則怎麼透過「IP」連線,首先我們在「Ethernet 0/0/0」介面 配置「IP」

system-view 
interface GigabitEthernet 0/0/0
ip address 192.168.8.3 255.255.255.0
quit

2.2 配置「SSH」連線協議

#進入編輯「模式」
system-view

#先根据加密算法生成秘钥对,用于传输数据时加密保护,保存在交换机中但不保存在配置文件中
rsa local-key-pair create


#配置VTY用户連接數,设置用户验证方式AAA。指定VTY类型用户界面只支持SSH协议,设备将自动禁止telnet功能。
user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh

#回到上一層
quit

#進入「aaa」
aaa

#建立「使用者」(admin) 與「密碼」(123456)
local-user admin password cipher 123456

#指定「admin」(帳戶) 採用「ssh」連線
local-user admin service-type ssh

#給予「admin」最高權限 0-15
local-user admin privilege level 15

#指定「admin」(帳戶) 採用「ssh」密碼驗證
ssh user admin authentication-type password

#啟用「ssh」
stelnet server enable

#檢查「admin」ssh 配置方法
display ssh user-information admin

#查看全局配置信息
display ssh server status

#設定完成使用「Putty」工具連接即可


PS. 若使用「路由器」設備遇到「####」等待「3分鐘」還沒進去「CLI」可以參考以下建議設定



完成上述設定,重新啟動「eNSP」即可

#=====配置「交換機SSH 協議=====

system-view

rsa local-key-pair create

user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh
quit

aaa
local-user admin password cipher 123456
local-user admin service-type ssh
local-user admin privilege level 15
#允許「admin」使用「ssh」、「sftp」
ssh user admin service-type all
ssh user admin authentication-type password
stelnet server enable


參考資料