一.單元ansible簡介和安裝
1.ansible是什麼?
關於ansible
ansible是一種it自動化工具。它可以幫助我們批量配置系統,部署軟體以及協調更高階的it任務,例如連續部署或零停機滾動更新。
ansible的主要目標是讓工作變得簡單和易操作,它同時也非常關注安全性和可靠性,傳輸過程是基於openssh來實現的,保證了傳輸的資料的安全性!大大降低安全風險!
2.ansible的特點
ansible採用無**方式(agentless)管理機器,因為ansible的通訊是通過openssh來實現的,所以你無需考慮如何遠端公升級受管機器的**程式!只要可以保證openssh可以正常通訊即可!因為現在幾乎所有的linux平台都自帶了openssh,ansible在部署階段無需考慮在遠端機器上安裝客戶端軟體!這樣極大的減少了前期部署的工作!
ansible有豐富的模組可以讓你直接使用,當然在ansible的社群也有很多優秀的開發者在貢獻新的模組,所以你總會找到適合自己的模組,當然你也可以自己開發模組!
ansible是使用python開發,所以關於ansible的二次開發和模組開發成本相對較低
3.ansible的工作流程
4.ansible的一些基本概念
控制節點
任何裝有ansible的機器都可以叫做控制節點。您可以從任何控制節點呼叫/usr/bin/ansible執行一條任務,或執行/usr/bin/ansible-playbook命令讀取劇本執行多個任務
託管節點
使用ansible管理的的網路裝置和伺服器,都可以叫做託管節點!託管節點有時也可以叫做「主機「,託管節點無需安裝ansible
清單( inventory )
託管節點的列表。ansible在管理某個節點前,需要先將節點新增到清單檔案中!清單檔案有時也稱為「主機清單檔案」。清單檔案可以為每個託管節點指定資訊,例如ip位址、埠等資訊!也可以把主機分成主機組管理!
模組(modules)
ansible執行的單位,可以使用臨時命令一次執行乙個任務
劇本(playbooks)
任務的有序列表檔案,所以我們可以重複讀取劇本檔案重複執行劇本內的任務!這個是我們執行任務的主要方式
5.ansible的安裝
環境要求
ansible要求主機上有python2.7或者python3.5以上的環境,在red hat,debian,centos,macos,任何bsd等系統上可以直接安裝。但是控制節點不支援windonws平台!
我們這裡準備3臺centos系統的虛擬機器,一台為centos7用來安裝ansible扮演我們的控制節點,另外兩台我們可以使用centos6,扮演託管節點
1.在centos上安裝控制節點
在centos6版本的系統上ansible安裝包還未被加入到yum的base源中,需要安裝epel源之後才可以安裝ansible
yum -y install epel-release
yum -y install ansible
在centos7上時,ansible安裝包已經被加入到了yum的base源中,所以可以直接使用yum安裝
yum -y install ansible
新版本安裝包可以去官方獲取:
當然安裝方式還支援原始碼安裝,我們可以去github上獲取原始碼或者使用python的pip安裝都是可以的:
大家可以參考官方的文件:
ansible安裝完畢後可以直接使用,無需啟動!
2.在託管節點要注意的事項
1、在託管節點上,您需要一種通訊方式,通常是ssh,還需要有python 2(2.6版或更高版本)或python 3(3.5版或更高版本)
2、這些環境在centos6以上版本的系統上都是預設滿足的!所以可以不用做任何配置!
3、但是如果託管節點上啟用了selinux,那麼需要安裝libselinux-python,這個我們可以直接使用yum安裝:yum -y install libselinux-python
3.ssh無密碼連線配置
1、控制節點在和託管節點在通訊時是通過openssh建立的,所以控制節點在和託管節點建立通訊時肯定需要賬號和密碼的認證!每次執行任務都需要輸入賬號和密碼在使用過程當中是很不方便的!所以我們這裡要建立起控制節點和託管節點的授信配置,通過公鑰認證來實現控制節點和託管節點ssh的無密碼連線!
2、在控制節點操作:
生成金鑰對
ssh-keygen -t rsa
拷貝公鑰到託管節點
ssh-copy-id 託管節點使用者@ip
首次拷貝需要再輸入一次密碼才可以將公鑰複製過去,輸入完畢後以後再連線就不需要輸入賬號密碼了!
4.編輯主機清單檔案(inventory)
我們需要將所有託管節點以主機名或者ip的形式新增的主機清單檔案中
主機清單檔案安裝後預設存放路徑:/etc/ansible/hosts
例如如下格式新增:
192.0.2.50
aserver.example.org
bserver.example.org
當然我們也可以分組:
[webservers]
192.0.2.50
aserver.example.org
bserver.example.org
中括號中的webservers就是定義的組名,下面3臺伺服器是這個組的成員主機
我們也可以按如下格式新增主機
[webservers]
192.0.2.[50:100]
web[a:f]server.example.org
組在呼叫時的通配表達方式
5.測試
ansible執行一條任務的語法格式:
ansible 主機/主機組 -m 模組 -a 『模組的引數『
我們使用ping模組ping清單檔案中所有節點,檢視是否可達
ansible all -m ping
有如下返回說明節點都可達,all代表所有主機
當然我們也可以指定組或者主機操作
ansible webservers -m ping
我們再來在託管節點執行一條命令,檢視託管節點的ip資訊
ansible all -a 『ifconfig』
發現我們這條命令沒有指定呼叫哪個模組,那麼他會使用預設模組,預設模組為command,作用是在託管節點執行普通命令
類似的模組還有很多,下面我們會列舉一些常用的模組講解!
6.ansible的配置檔案
ansible中的某些設定可以通過配置檔案(ansible.cfg)進行調整,對於大多數環境預設配置就足夠使用了,但是也可能會有一些特殊的原因我們需要修改這些配置引數!
配置檔案路徑
在centos上yum安裝的ansible,預設的配置檔案路徑如下:
配置檔案:/etc/ansible/ansible.cfg
7.臨時命令簡介(ad-hoc commands)
ansible ad-hoc命令使用/usr/bin/ansible命令列工具對乙個託管節點或多個託管節點一次執行乙個任務!臨時命令既快速又簡單,但不可重複使用!
為什麼要用臨時命令(ad-hoc commands)
臨時命令非常適合您很少重複執行的任務。例如,如果您想在聖誕節假期關閉實驗室中所有機器的電源,則可以在ansible中執行快速一線操作而無需編寫劇本。臨時命令如下所示:
$ ansible [pattern] -m [module] -a 「[module options]」
臨時任務可用於重新引導伺服器,複製檔案,管理程式包和使用者等。您可以在臨時任務中使用任何ansible模組。
8.使用劇本(playbook)
劇本是ansible的配置,部署和編排語言。與臨時任務(ad-hoc)執行模式相比,劇本是使用ansible的完全不同的方式,並且功能特別強大。
ansible介紹和安裝
ansible是由 python 編寫的強大的配置管理解決方案,ansible 的特點就在於它的簡潔與高效率 ansible與其他的配置管理工具不同點在於 不需要你在想要配置的每個節點上安裝自己的元件,也就是說,ansible管理各個節點不需要依賴於agent端 一 ansible 入門 官網 官方...
Ansible介紹與安裝
ansible是一款自動化運維工具,基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執...
ansible 安裝和使用
1 安裝 yum install epel release y yum install ansible y 2 ansible 配置檔案 ansible 配置檔案 etc ansible ansible.cfg 一般保持預設 defaults inventory etc ansible hosts ...