windows下實現VMware環境CentOS7虛擬機使用ansible控制gns3網絡設備

前期準備

VMware安裝

前往VMWare官網 下載對應最新的VMWare workstation並安裝。

CentOS7安裝並配置靜態網絡

創建CentOS7虛擬機後爲虛擬機配置靜態網絡。具體配置方法可參考“CentOS7靜態網絡初始化配置與軟件源的設置

gns3創建新的項目

記得勾選彈出頁面中配置保存的兩個勾選框
在這裏插入圖片描述

VMWare與GNS3之間的連接

在gns3中添加網絡雲,將橋接到VMWare網卡

添加用於橋接網絡的雲。
在這裏插入圖片描述
配置橋接雲使其橋接到VMWare的VMNet8網卡
在這裏插入圖片描述
將雲與路由器使用線相連實現VMWare與GNS3之間的互聯。
在這裏插入圖片描述

配置網絡

爲了更好的模擬以太網,我們使用兩臺虛擬路由實現CentOS與gns3設備之間的互通。如下圖所示。
在這裏插入圖片描述

gns3設備路由配置

關於gns3設備的接口ip及路由配置,可參考《CCNA網絡設備基礎命令記錄

CentOS7路由配置

CentOS虛擬機需要配置路由到gns3設備,否則只能訪問直接相連的路由器,無法訪問不同網段的設備,這裏可參考《CentOS添加靜態路由》配置CentOS虛擬機的路由。

gns3網絡設備設置(支持遠程控制、ssh連接等)

由於我們需要使用ansible對網絡設備進行操作管理,而ansible使用的ssh協議對被控制端進行控制的,所以需要網絡設備開啓ssh協議,可參考《CCNA網絡設備基礎命令》查看如何對cisco設備開啓ssh協議(部分設備不支持ssh)。

CentOS7安裝並配置ansible

在CentOS中,可以使用yum命令自動下載安裝ansible,但是這裏筆者推薦使用pythonpip工具進行安裝,因爲ansible本身就是使用python寫的,對python非常友好,而且可以自動安裝最新版本,無需額外的配置。若是在生產環境或者其他無法連接外網的情況下,可參考《離線狀態下安裝python packages》進行離線安裝最新版的ansible。

CentOS7使用ansible控制gns3設備

ansible安裝完成後,即可嘗試着使用ansible對網絡設備進行操作,由於這裏是測試,所以我們只需要嘗試着配置一臺即可。可以嘗試着獲取cisco設備參數信息修改cisco設備參數信息

獲取cisco設備參數信息

在CentOS的工作目錄下,創建ansible_test目錄,並進入該目錄。

$ mkdir ansible_test
$ cd ansible_test

編寫被控制端設備的各項參數,新建hosts文件,內容如下:

[cisco]
10.0.1.2

[cisco:vars]
ansible_ssh_user=cisco
ansible_ssh_pass=cisco
ansible_network_os=ios
ansible_become=True                
ansible_become_method=enable
ansible_become_pass=cisco

編寫測試playbook劇本,新建文件playbook01.yml內容如下:

---

- name: Network Getting Started First Playbook
  connection: network_cli
  gather_facts: false
  hosts: all
  tasks:

    - name: Get config for iOS devices
      ios_facts:
        gather_subset: all
    - name: Display the config
      debug:
        msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"

運行測試命令:

# ls
hosts  playbook01.yml
# ansible-playbook -i hosts playbook01.yml 

若是可以看到如下效果,
在這裏插入圖片描述
表示測試通過,表明ansible已經可以訪問到cisco設備的數據了。

修改cisco設備參數信息

編寫更改cisco設備參數的playbook劇本,新建playbook02.yml,內容如下:

---

- name: Network Getting Started First Playbook
  connection: network_cli
  gather_facts: false
  hosts: all
  vars:
    new_hostname: NEW-SSH-R2
  tasks:

    - name: Get config for IOS devices
      ios_facts:
        gather_subset: all
    - name: Display the config
      debug:
        msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"

    - name: configure top level configuration
      register: update
      ios_config:
          lines: hostname {{new_hostname}}

    - name: Display the new config
      when: update is succeeded
      debug: 
        msg: "Update Succeeded , and now ,the hostname is {{new_hostname}}"

執行命令使ansible更改網絡配置

# ansible-playbook -i hosts playbook02.yml 

PLAY [Network Getting Started First Playbook] ************************************************************************************************************

TASK [Get config for IOS devices] ************************************************************************************************************************
ok: [10.0.1.2]

TASK [Display the config] ********************************************************************************************************************************
ok: [10.0.1.2] => {
    "msg": "The hostname is SSH-R2 and the OS is 12.4(11)T2"
}

TASK [configure top level configuration] *****************************************************************************************************************
changed: [10.0.1.2]

TASK [Display the new config] ****************************************************************************************************************************
ok: [10.0.1.2] => {
    "msg": "Update Succeeded , and now ,the hostname is NEW-SSH-R2"
}

PLAY RECAP ***********************************************************************************************************************************************
10.0.1.2                   : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@gns3-server-30 ansible_test]# 

重新回到該cisco設備上看,發現該設備的hostname已經更改爲NEW-SSH-R2,如下圖所示:
在這裏插入圖片描述
表明此時已經成功使用ansible控制gns3模擬出來的cisco設備。

本例沒有什麼大的實際生產意義,但是可以作爲教程參考例子幫助有一定網絡基礎和運維基礎的IT人員學習使用。由於筆者的個人能力有限,文中多少會有些許差錯,若有什麼寫的不恰當的地方,歡迎在評論區指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章