Ansible運維Cisco設備

1、Ansible簡介
html

        ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、chef、func、fabric)的優勢,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基於 paramiko 開發的,而且基於模塊化工做,自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊,ansible只是提供一種框架。ansible不須要在遠程主機上安裝client/agents,由於它們是基於ssh來和遠程主機通信的。ansible目前已經已經被紅帽官方收購,是自動化運維工具中你們承認度最高的,而且上手容易,學習簡單。是每位運維工程師必須掌握的技能之一。python


        特色:ios


    1. 一、部署簡單,只需在主控端部署Ansible環境,被控端無需作任何操做;shell

    2. 二、默認使用SSH協議對設備進行管理;數據庫

    3. 三、有大量常規運維操做模塊,可實現平常絕大部分操做;centos

    4. 四、配置簡單、功能強大、擴展性強;bash

    5. 五、支持API及自定義模塊,可經過Python輕鬆擴展;服務器

    6. 六、經過Playbooks來定製強大的配置、狀態管理;網絡

    7. 七、輕量級,無需在客戶端安裝agent,更新時,只需在操做機上進行一次更新便可;架構

    8. 八、提供一個功能強大、操做性強的Web管理界面和REST API接口——AWX平臺。




        架構:

1204916-20171205163000628-69838828.png

    Ansible:Ansible核心程序。
    HostInventory:記錄由Ansible管理的主機信息,包括端口、密碼、ip等。
    Playbooks:「劇本」YAML格式文件,多個任務定義在一個文件中,定義主機須要調用哪些模塊來完成的功能。
    CoreModules:核心模塊,主要操做是經過調用核心模塊來完成管理任務。
    CustomModules:自定義模塊,完成核心模塊沒法完成的功能,支持多種語言。
    ConnectionPlugins:鏈接插件,Ansible和Host通訊使用。

    


    運行過程:


      Ansible 系統由控制主機對被管節點的操做方式可分爲兩類,即adhoc和playbook:

  • ad-hoc模式(點對點模式)
      使用單個模塊,支持批量執行單條命令。ad-hoc 命令是一種能夠快速輸入的命令,並且不須要保存起來的命令。就至關於bash中的一句話shell。

  • playbook模式(劇本模式)
      是Ansible主要管理方式,也是Ansible功能強大的關鍵所在。playbook經過多個task集合完成一類功能,如Web服務的安裝部署、數據庫服務器的批量備份等。能夠簡單地把playbook理解爲經過組合多條ad-hoc操做的配置文件。

1204916-20171205162615738-1292598736.png

        命令執行過程:

            一、加載本身的配置文件,默認/etc/ansible/ansible.cfg


    1. 二、查找對應的主機配置文件,找到要執行的主機或者組;

    2. 三、加載本身對應的模塊文件,如 command;

    3. 四、經過ansible將模塊或命令生成對應的臨時py文件(python腳本), 並將該文件傳輸至遠程服務器;

    4. 五、對應執行用戶的家目錄的.ansible/tmp/XXX/XXX.PY文件;

    5. 六、給文件 +x 執行權限;

    6. 七、執行並返回結果;

    7. 八、刪除臨時py文件,sleep 0退出;



2、Ansible安裝

    Ansible 可以安裝到 Linux、BSD、Mac OS X 等平臺,Python 版本最低要求爲 2.6。

    這次安裝在Centos 7環境下安裝:

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

    

    注:若沒法安裝,請更換Yum源倉庫再次嘗試安裝。


3、Cisco交換機配置

     Cisco交換機須要配置SSH登陸.具體配置以下:


     ip domain-name wlxbc.cn                    配置域名

     username cisco password 15 cisco      建立ssh用戶

     crypto key generate rsa                      建立密鑰

     ip ssh version 2                                   設置SSH 版本

     line vty 0 4                                          VTY配置

         transport input ssh                         只容許SSH協議傳輸

         login local                                       本地登陸


4、Ansible運維操做


        安裝完後正式來使用,ansible默認配置文件路徑爲:/etc/ansible;

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

        host_key_checking = False

        這一行的意思是,在ssh登陸的時候,是檢查known_hosts文件中是否有該IP的密鑰。默認是檢查的,若是不存在,那麼就登陸失敗,這時候能夠經過手動ssh一次,ssh會自動將密鑰 添加入known_hosts文件中,或者經過取消註釋,使其不檢查文件。

        設置完成後保存。


        清空並配置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   測試ansible命令是否可達

        

        Ansible經常使用命令:

        ansible --list-host all     查詢全部主機

        ansible IP地址 -m raw -a "show ip int brief" -u admin -k  執行單個主機

        ansible cisco -m raw -a "show clock" -u admin -k  執行某個組

        ansible all -m raw -a "show clock" -u admin -k  執行全部組  

        ansible-playbook arp.yml -u admin -k      執行劇本

        ansible-playbook arp.yml -u admin -k | grep 'ok:\|8001'   執行劇本,匹配過濾


   
        劇本:網絡模塊地址: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





配置交換機:

---

- 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

相關文章
相關標籤/搜索