Ansible 使用原因及安裝方式
爲什麼要選擇使用ansible
當你的公司沒有太多資金而決定把性能過剩服務器進行虛擬化,將一臺真實服務器變爲多臺虛擬機的時候;當你的公司因業務需求需要擴充服務器的時候;當你重複配置、安裝相同的軟件到其他服務器的時候…
你會發現,咦?我是不是有哪臺服務器忘記配置了,另一臺的服務是要怎麼安裝來的?我的安裝文檔的呢?咦?怎麼這不是一類操作系統的呢?爲什麼安裝的操作系統當時沒有統一呢?你的服務器運維工作越來越雜亂,直到天天加班,而這個時候,你就需要ansible。
舉個例子,你會選擇ansible的
- 一臺服務器(簡單)
# 以centos操作系統爲例,當你需要安裝某個個軟件的時候,例如gcc
yum install gcc -y
# 或者當你需要高版本gcc的時候,你需要下載源碼及其依賴包然後
cd gccXX.x
./configure --prefix=/path/to/gcc && make && make install
- 多臺操作系統相同的服務器(一般)
# centos操作系統爲例 hosts文件內分別爲 node1,node2,node3,其中操作節點爲 manager
# 你可能很快可以想到,使用ssh互信,當然只需要做manager 到 node[1-3]的單向ssh憑證即可,再聰明點,你覺得寫個腳本,像這樣:
cat gcc_install_nodes.sh
#!/bin/bash
nodelist=$1
for node in $nodelist
do
# 後臺執行,然後日誌保存到${node}.log
ssh $node "yum install gcc -y" &>${node}.log &
done
wait
echo "install gcc is done,and you need to look at nodes.log in this dir"
# 執行,然後等待結果
./gcc_install_nodes.sh "node1 node2 node3"
- N+ 臺操作系統類型各異的服務器(困難)
# 你想我咋地,還真寫嗎?老累了,還不確定能不能跑,這就是ansible爲什麼會出現的原因
# 能寫出來,但老闆可能不會給你那麼多時間調試你心愛的腳本的。
有了ansible,你不需要再也for循環;有了ansible,你可以爲多臺不同操作系統的服務器安裝相同的軟件,有了ansible,格式化的結果範圍更容易讓你判斷出操作中出現的問題…
也就是說,你可以偷懶了(嗯,就是你可以有時間學習其他知識了)
快速安裝ansible
- 有網絡環境
配置國內鏡像源:阿里巴巴鏡像源
以centos爲例:yum 安裝
點擊centos鏡像即可有對應的指導下載指定yum源
# 安裝 ansible
yum install ansible -y
以centos爲例: pip 安裝
# -i 指定臨時鏡像源
pip install -i https://mirrors.aliyun.com/pypi/simple ansible
# 永久修改爲本地鏡像方法如下:
vim ~/.pip/pip.conf
修改如下:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
-
離線安裝二進制包方式
若爲centos,現在有線環境下去rpm search找到對應版本的rpm進行下載安裝,或者使用yum install/reinstall ansible --downloadonly --downloaddir=/path命令即可將指定安裝包下載到指定目錄下面,然後拷貝到離線服務器,使用rpm -ivh *.rpm即可安裝,若缺少依賴,按照同樣的方式下載對應版本的rpm包即可 -
離線方式 python
# 創建python虛擬環境或者在一個純淨無軟件包安裝的python環境
pip install ansible
pip freeze > ansible_request.txt
pip download -r ansible_request.txt -d /pathdir
# 在離線服務器上安裝
pip install --no-index --find-links=packages -r ansible_request.txt
- 離線方式源碼
源碼下載地址:ansible 源碼
cd ansible_src
python setup.py build
python setup.py install
# 或者
pip install ansible_src.zip
若缺少對應的python依賴包,可去Pypi下載即可。
以上內容僅個人理解,如有不對之處,請指正修改。