一 Ansible入門篇

2022-07-22 08:06:10 字數 3135 閱讀 6341

ansible是乙個自動化運維的工具

基於python語言編寫,因此機器需要具備python環境。

通過ssh的連線方式進行自動化部署,ansible優先使用openssh,在使用python模組裡的paramiko作為ssh工具

優點:

1.入門快速,簡單上手

2.基於python語言

3.無**(基於ssh,無需安裝客戶端,如zabbix的客戶端要安裝agent)

4.可讀性強(採用yaml格式)

缺點:

1.對windows系統的排斥(服務端無法安裝在windows)

2.執行效率較低(task任務是序列執行;多台裝置同時執行乙個task,有併發數限制)

安裝的是基於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

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

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

方式一:直接定義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功能

inventory = /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是通過匹配來判斷是否進入了下乙個組,因此,未有分組的主機,只能放在組的上頭

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

實現:ansible localhost -m ping

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

#ping模組的使用:

ping-module

需求:執行乙個linux命令,檢視磁碟空間

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

HOOK API入門篇 一

windows系統是建立在事件驅動的機制上的,說穿了就是整個系統都是通過訊息的傳遞來實現的。而鉤子是windows系統中非常重要的系統介面,用它可以截獲並處理送給其他應用程式的訊息,來完成普通應用程式難以實現的功能。鉤子可以監視系統或程序中的各種事件訊息,截獲發往目標視窗的訊息並進行處理。這樣,我們...

Python入門篇(一)

對了,入門篇都是python3.6的,其實只要有其它物件導向的經驗,看一遍就ok了,如果沒有基礎的朋友,可就得多寫幾遍嘍,理解物件的用法,未完待續 一 概念 類 用來描述具有 相同屬性和方法的物件的集合 二 命名方式 1 類名大駝峰 2 方法名小駝峰 3 嚴格區分大小寫 三 類的定義 class c...

Canvas入門篇(一)

html5的核心功能canvas 一 使用canvas畫圖的前提是先在html5網頁中使用canvas定義乙個 畫布 瀏覽器不支援canvas提示語id為canvas標識id,canvas畫布寬度高度,單位px 二 在js中呼叫canvas api,在定義的畫布中繪畫要先用js獲取canvas物件 ...