您好,登錄后才能下訂單哦!
一、Ansible簡(jiǎn)介
????????ansible是新出現(xiàn)的自動(dòng)化運(yùn)維工具,基于Python開(kāi)發(fā),集合了眾多運(yùn)維工具(puppet、chef、func、fabric)的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能。ansible是基于 paramiko 開(kāi)發(fā)的,并且基于模塊化工作,本身沒(méi)有批量部署的能力。真正具有批量部署的是ansible所運(yùn)行的模塊,ansible只是提供一種框架。ansible不需要在遠(yuǎn)程主機(jī)上安裝client/agents,因?yàn)樗鼈兪腔趕sh來(lái)和遠(yuǎn)程主機(jī)通訊的。ansible目前已經(jīng)已經(jīng)被紅帽官方收購(gòu),是自動(dòng)化運(yùn)維工具中大家認(rèn)可度最高的,并且上手容易,學(xué)習(xí)簡(jiǎn)單。是每位運(yùn)維工程師必須掌握的技能之一。
????????特點(diǎn):
1、部署簡(jiǎn)單,只需在主控端部署Ansible環(huán)境,被控端無(wú)需做任何操作;
2、默認(rèn)使用SSH協(xié)議對(duì)設(shè)備進(jìn)行管理;
3、有大量常規(guī)運(yùn)維操作模塊,可實(shí)現(xiàn)日常絕大部分操作;
4、配置簡(jiǎn)單、功能強(qiáng)大、擴(kuò)展性強(qiáng);
5、支持API及自定義模塊,可通過(guò)Python輕松擴(kuò)展;
6、通過(guò)Playbooks來(lái)定制強(qiáng)大的配置、狀態(tài)管理;
7、輕量級(jí),無(wú)需在客戶端安裝agent,更新時(shí),只需在操作機(jī)上進(jìn)行一次更新即可;
8、提供一個(gè)功能強(qiáng)大、操作性強(qiáng)的Web管理界面和REST API接口——AWX平臺(tái)。
????????架構(gòu):
????Ansible:Ansible核心程序。
????HostInventory:記錄由Ansible管理的主機(jī)信息,包括端口、密碼、ip等。
????Playbooks:“劇本”YAML格式文件,多個(gè)任務(wù)定義在一個(gè)文件中,定義主機(jī)需要調(diào)用哪些模塊來(lái)完成的功能。
????CoreModules:核心模塊,主要操作是通過(guò)調(diào)用核心模塊來(lái)完成管理任務(wù)。
????CustomModules:自定義模塊,完成核心模塊無(wú)法完成的功能,支持多種語(yǔ)言。
????ConnectionPlugins:連接插件,Ansible和Host通信使用。
????
????運(yùn)行過(guò)程:
??????Ansible 系統(tǒng)由控制主機(jī)對(duì)被管節(jié)點(diǎn)的操作方式可分為兩類(lèi),即adhoc和playbook:
ad-hoc模式(點(diǎn)對(duì)點(diǎn)模式)
使用單個(gè)模塊,支持批量執(zhí)行單條命令。ad-hoc 命令是一種可以快速輸入的命令,而且不需要保存起來(lái)的命令。就相當(dāng)于bash中的一句話shell。
playbook模式(劇本模式)
是Ansible主要管理方式,也是Ansible功能強(qiáng)大的關(guān)鍵所在。playbook通過(guò)多個(gè)task集合完成一類(lèi)功能,如Web服務(wù)的安裝部署、數(shù)據(jù)庫(kù)服務(wù)器的批量備份等。可以簡(jiǎn)單地把playbook理解為通過(guò)組合多條ad-hoc操作的配置文件。
????????命令執(zhí)行過(guò)程:
????? ?? ? ?1、加載自己的配置文件,默認(rèn)/etc/ansible/ansible.cfg
;
2、查找對(duì)應(yīng)的主機(jī)配置文件,找到要執(zhí)行的主機(jī)或者組;
3、加載自己對(duì)應(yīng)的模塊文件,如 command;
4、通過(guò)ansible將模塊或命令生成對(duì)應(yīng)的臨時(shí)py文件(python腳本), 并將該文件傳輸至遠(yuǎn)程服務(wù)器;
5、對(duì)應(yīng)執(zhí)行用戶的家目錄的.ansible/tmp/XXX/XXX.PY
文件;
6、給文件 +x 執(zhí)行權(quán)限;
7、執(zhí)行并返回結(jié)果;
8、刪除臨時(shí)py文件,sleep 0
退出;
二、Ansible安裝
????Ansible 能夠安裝到 Linux、BSD、Mac OS X 等平臺(tái),Python 版本最低要求為 2.6。
? ? 此次安裝在Centos 7環(huán)境下安裝:
? ?使用命令: yum install ansible -y 安裝即可。
? ??
????注:若無(wú)法安裝,請(qǐng)更換Yum源倉(cāng)庫(kù)再次嘗試安裝。
三、Cisco交換機(jī)配置
?????Cisco交換機(jī)需要配置SSH登錄.具體配置如下:
? ???ip domain-name?wlxbc.cn ???????????????????配置域名
? ? ?username cisco password 15 cisco??????創(chuàng)建ssh用戶
? ? ?crypto key generate rsa? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建密鑰
? ? ?ip ssh version 2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?設(shè)置SSH 版本
? ? ?line vty 0 4? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? VTY配置
? ? ?????transport input ssh? ? ? ? ? ? ? ? ? ? ? ? ?只允許SSH協(xié)議傳輸
? ????? ?login local? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?本地登錄
四、Ansible運(yùn)維操作
????????安裝完后正式來(lái)使用,ansible默認(rèn)配置文件路徑為:/etc/ansible;
????????修改ansible配置文件,將一下行注釋去掉
????????host_key_checking = False
????????這一行的意思是,在ssh登錄的時(shí)候,是檢查known_hosts文件中是否有該IP的密鑰。默認(rèn)是檢查的,如果不存在,那么就登錄失敗,這時(shí)候可以通過(guò)手動(dòng)ssh一次,ssh會(huì)自動(dòng)將密鑰 添加入known_hosts文件中,或者通過(guò)取消注釋?zhuān)蛊洳粰z查文件。
? ? ? ? 設(shè)置完成后保存。
????????清空并配置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? ?測(cè)試ansible命令是否可達(dá)
????????
????????Ansible常用命令:
????????ansible --list-host all ? ? 查詢所有主機(jī)
????????ansible IP地址 -m raw -a "show ip int brief" -u admin -k ?執(zhí)行單個(gè)主機(jī)
????????ansible cisco -m raw -a "show clock" -u admin -k ?執(zhí)行某個(gè)組
????????ansible all -m raw -a "show clock" -u admin -k ?執(zhí)行所有組 ?
????????ansible-playbook arp.yml -u admin -k ? ? ?執(zhí)行劇本
????????ansible-playbook arp.yml -u admin -k | grep 'ok:\|8001' ? 執(zhí)行劇本,匹配過(guò)濾
???
????????劇本:網(wǎng)絡(luò)模塊地址: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
配置交換機(jī):
---
- 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
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。