一、Ansible入門篇


一、Ansible簡介

Ansible是一個自動化運維的工具
基於python語言編寫,因此機器需要具備python環境。
通過ssh的連接方式進行自動化部署,ansible優先使用OpenSSH,在使用python模塊里的paramiko作為SSH工具

 

二、Ansible的優缺點

  優點:

1.入門快速,簡單上手
2.基於Python語言
3.無代理(基於ssh,無需安裝客戶端,如zabbix的客戶端要安裝agent)
4.可讀性強(采用YAML格式)

  缺點:

1.對Windows系統的排斥(服務端無法安裝在windows)
2.運行效率較低(task任務是串行運行;多台設備同時運行一個task,有並發數限制)

 

三、Ansible的安裝

  安裝的是基於Python2.7的Ansible

  在Ubuntu上的安裝

#1.增加PPA源,並安裝Ansible
sudo apt-get unpdate
sudo apt-get install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt-get install ansible

#2.查看版本,結果無報錯
ansible --version

  在Centos7上的安裝

#1.安裝EPEL擴展軟件倉庫
sudo yum -y install epel-release

#2.安裝Ansible
sudo yum -y install ansible

#3. 檢查ansible的版本和運行環境
ansible --version

 

四、Ansible的升級文檔

https://docs.ansible.com/ansible/2.7/porting_guides/porting_guides.html

  此文檔為各個版本如何遷移到2.7版本,遷移有風險,操作需謹慎

 

五、Ansible框架介紹

  5.1 框架圖

  

   5.2 各組件功能

ansible.cfg        #ansible的配置文件,包含各種Ansible全局性質的參數,可在不同項目下或者不同用戶下創建一樣的ansible.cfg文件,作為局部配置文件,檢索順序:局部-->全局
inventory        #設備列表,當跑腳本時,需要告訴Ansible針對哪些設備或設備組
variable        #變量
module        #模塊,通過其他語言編寫而成,能實現某個特定的功能的工具,例如思科配置接口的模塊,修改ip地址的模塊等等
Jinja2        #模板系統,Ansible可實現批量配置網絡設備
Role        #角色,一套文件夾,里面定義了例如變量,具體任務task。Role里面定義的內容可以實現某些特殊功能,而你在使用不通的腳本過程中可以導入Role來實現某一個功能。而不用重復寫

#以上的組件,會由以下的“客戶”來使用
Ad-hoc    #即插即用,簡易模式,一條命令,一次使用
playbook    #劇本,基於YAML文件格式書寫,可以包含Ansible任意功能,無論是設備列表,變量,jinja2模板,條件循環,模塊等等

 

  5.3 inventory介紹

             默認路徑是/etc/ansible/hosts文件,默認配置如下圖,此hosts為全局文件,可根據不通用戶或者不通項目設置局部文件,即在配件文件里指定ansible.cfg里的inventory=my_hosts

 

  關於定義主機(默認編輯/etc/ansible/hosts文件),一般有兩種方式:

#方式一:直接定義IP
192.168.1.254


#方式二:直接定義域名,此方法本機的dns服務器需要能解析出此域名對應的ip地址,或者在自己的/etc/hosts文件里添加本地域名解析
pc1.test.com


#方式二:定義特殊名稱,前提dns服務器或者/etc/hosts文件沒辦法解析此自定義名稱
#書寫格式:自定義名稱[空格]ansible_host=[主機IP]
如定義個R1
R1 ansible_host=192.168.1.254

  示例:

需求:
定義一台網絡交換機192.168.1.254主機名為SW1,屬於network組,也屬於cisco組
定義一台pc,192.168.1.5,主機名PC1
定義一台pc,192.168.1.6


#實現:
#步驟一:開啟ansible檢索inventory功能
編輯/etc/ansible/ansible.cfg
inventory      = /etc/ansible/hosts    #將注釋#去掉

#步驟二:編輯/etc/ansible/hosts文件
PC1 ansible_host=192.168.1.5
192.168.1.6

[network]
SW1 ansible_host=192.168.1.254

[cisco]
192.168.1.254

:wq      #保存


ps:關於組的分割,ansible是通過匹配[]來判斷是否進入了下一個組,因此,未有分組的主機,只能放在組的上頭

 

 

 

六、Ansible簡單實例1

  需求:測試主機是否存活(存活的意思是主機開了ssh端口)

  實現:ansible localhost -m ping

  

#此處的ping模塊,並非傳統的ic'm'p ping原理,而是它嘗試使用默認的設定去ssh登陸遠端設備,如果登陸成功,就反饋:pong

#ping模塊的使用:
 https://docs.ansible.com/ansible/latest/modules/ping_module.html#ping-module

 

七、Ansible簡單實例2

  需求:執行一個linux命令,查看磁盤空間

  實現:ansible localhost -m command -a "df -h"

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM