S小魚仔S 網誌搜尋

2019年11月8日 星期五

S小魚仔S Ansible 開發 SNMP 獲取交換機數據

使用「ansible」應用「snmp_facts」模塊需要安裝「Python」依賴「pyasn1 0.4.7」、「pysnmp-4.4.1.tar.gz」,採用offline install」安裝方式因為客戶環境不一定能上網。
PS. 需要安裝「gcc」編譯程序唷

#====安裝 python 「pyasn」依賴模塊====
tar -xzf /opt/pyasn1-0.4.7.tar.gz -C /opt/
cd /opt/pyasn1-0.4.7
python setup.py install

#====安裝 python 「snmp」模塊====
tar -xzf /opt/pysnmp-4.4.1.tar.gz -C /opt/
cd /opt/pysnmp-4.4.1
python setup.py install

#===開發「ansible playbook
PS. 支持「snmp」v1/v2/v2c/v3 協議

#編輯「vi /etc/ansible/hosts

[cisco]
192.168.6.252 ansible_connection=local

#編寫「ansible playbook


- hosts: localhost
  gather_facts: no
  vars:
    snmp_host: 192.168.6.252
    snmp_community: public
    snmp_version: v2c
  tasks:
   - name: Gather facts with SNMP version 2
     snmp_facts:
       host: "{{snmp_host}}"
       version: "{{snmp_version}}"
       community: "{{snmp_community}}"
     register: snmp_log
   - name: print snmp_log
     debug:
       var: snmp_log

#顯示結果


相關參考資料
qiita.com」-「AnsibleでCisco IOSの情報収集

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