您好,登錄后才能下訂單哦!
一、Ansible簡介
????????ansible是新出現的自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于 paramiko 開發的,并且基于模塊化工作,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。ansible不需要在遠程主機上安裝client/agents,因為它們是基于ssh來和遠程主機通訊的。ansible目前已經已經被紅帽官方收購,是自動化運維工具中大家認可度最高的,并且上手容易,學習簡單。是每位運維工程師必須掌握的技能之一。
????????特點:
1、部署簡單,只需在主控端部署Ansible環境,被控端無需做任何操作;
2、默認使用SSH協議對設備進行管理;
3、有大量常規運維操作模塊,可實現日常絕大部分操作;
4、配置簡單、功能強大、擴展性強;
5、支持API及自定義模塊,可通過Python輕松擴展;
6、通過Playbooks來定制強大的配置、狀態管理;
7、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;
8、提供一個功能強大、操作性強的Web管理界面和REST API接口——AWX平臺。
????????架構:
????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操作的配置文件。
????????命令執行過程:
????? ?? ? ?1、加載自己的配置文件,默認/etc/ansible/ansible.cfg
;
2、查找對應的主機配置文件,找到要執行的主機或者組;
3、加載自己對應的模塊文件,如 command;
4、通過ansible將模塊或命令生成對應的臨時py文件(python腳本), 并將該文件傳輸至遠程服務器;
5、對應執行用戶的家目錄的.ansible/tmp/XXX/XXX.PY
文件;
6、給文件 +x 執行權限;
7、執行并返回結果;
8、刪除臨時py文件,sleep 0
退出;
二、Ansible安裝
????Ansible 能夠安裝到 Linux、BSD、Mac OS X 等平臺,Python 版本最低要求為 2.6。
? ? 此次安裝在Centos 7環境下安裝:
? ?使用命令: yum install ansible -y 安裝即可。
? ??
????注:若無法安裝,請更換Yum源倉庫再次嘗試安裝。
三、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? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?本地登錄
四、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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。