ansible改進版(1)--Python虛擬環境下安裝ansible

什麼ansible?

  • ansible是一個開源部署工具
  • 開發語言:Python
  • 特點:SSH協議通訊,全平臺,無需編譯,模塊化部署管理
  • 作用:推送playbook進行遠程節點快速部署

ansible與chef、saltstack的不同

  • chef

    • ruby語言編寫,C/S架構,配置需要git依賴,recipe腳本編寫規範,需要編程經驗
  • saltstack

    • Python語言編寫,c/s架構(需要安裝客戶端以便和服務端進行通信),模塊化配置管理,yaml腳本編寫規範,適合大規模集羣部署
    • 優點,內部含有異步文件服務器,可以爲客戶端加快文件速度,模塊化配置適合大羣集
  • ansible

    • Python語言編寫,無client,模塊化配置管理,playbook腳本編寫規範,易於上手,適合中小規模快速部署(符合敏捷快發概念,推薦)

ansible的優勢和應用場景

  • 輕量級無客戶端(agentless),降低了運維成本,和潛在的系統安全問題以及系統資源損耗,ansible不使用客戶端而調用ssh連接工具去實現通信的原因在於,成功的給部署工作做了一道減法

  • 開源免費,學習成本低,快速上手,語法結構簡單

  • 使用playbook作爲核心配置架構,統一的腳本格式批量化部署*

  • 完善的模塊化擴展,支持目前主流的開發場景(不管使用的Linux、Windows、不管開發使用java或者Python,不管業務邏輯複雜或者簡單,ansible都有相應的模塊擴展去匹配部署需要)

  • 強大的穩定性和兼容性(依託於Python,ssh,不需安裝其他工具)

  • 活躍的官方社區問題討論,方便Trubleshooting與DEBUG問題

ansible配合virtualenv安裝配置

  • ansible做一個用Python編寫的工具,就必須安裝穩定的Python語言作爲ansible依賴,並在Python包管理工具下安裝項目需要定製的Python模塊,假設系統中其他工具也會使用到Python,這裏就會出現一個問題,我們如何保證Python安裝的模塊只會應用於ansible而不會應用給其他工具,如何將ansible和其他工具隔離開,保證安裝的Python對應相應的工具,而避免造成模塊衝突或其他系統問題
  • 推薦使用Python下內置的virtualenv去隔離Python3.6語言環境,單獨劃分出一個環境給ansible2.5使用,確保ansible在一個獨立的環境下正常穩定運轉
  • ansible的兩種安裝模式(centos7)
    • yum包管理安裝
yum -y install ansible #ansible繼承了系統全局下的工具,系統下任意用戶都可以使用它
#缺點:系統安裝了其他工具的其他Python模塊,就會與ansible造成潛在的衝突與安全問題
#原因:在全局狀態下,Python模塊都會保存在同一個Python擴展目錄下,當ansible用到的模塊與其他工具用到的模塊一致時,但版本不同這樣勢必會造成Python管理混亂,最終影響產品部署交付
git 源碼安裝(推薦)
git clone https://github.com/ansible/ansible.git #克隆源代碼
# 配合virtualenv去實現ansible特定版本的獨立環境的創建,保證ansible在一個獨立的環境下運轉
  • ansible2.5+Python3.6安裝步驟(centos7)
  1. 預先安裝Python3.6版本
wget  https://www.python.org/ftp/python/3.6.5/Python-3.6.5rc1.tgz #下載包
tar zxf Python-3.6.5rc1.tgz #解壓包
cd Python-3.6.5/
./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-wl,-rpath /usr/local/lib" #編譯源碼
make && make install
which pip3.6 #查看包管理工具
ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip #做個軟連接
  1. 安裝virtualenv 虛擬環境
pip install virtualenv #創建環境
  1. 創建ansible賬戶並安裝Python3.6版本virtualenv實例
useradd deploy && su - deploy #創建ansible賬戶並切換到改賬戶
virtualenv -p /usr/local/bin/python3.py3-a2.5-env #創建Python3.6版本的virtualenv實例 -p指定當前使用的virtualenv使用的3.6版本,創建python3.py3-a2.5-env該名稱實例,用來集成ansible2.5版本
  1. git源碼安裝ansible2.5
cd /home/deploy/.py3-a2.5-env
git clone https://github.com/ansible/ansible.git #克隆源代碼到本地

如果沒有git工具
which git
su - root
yum -y install git nss curl
su - deploy
  1. 加載Python3.6 virtualenv環境
source /home/deploy/.py3-a2.5-env/bin/activate
  1. 安裝ansible依賴包
pip install paramiko PyYAML jinja2 #保證ansible能正常加載使用
  1. Python3.6虛擬環境下加載ansible2.5
mv ansible .py3-a2.5-env/ #將ansible源代碼移動到Python3.6虛擬環境下
cd .py3-a2.5-env/ansible/&& git checkout stable-2.5 #切換到ansible安裝版本爲2.5
source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q #在虛擬環境下加載ansible2.5版本
  1. 驗證ansible 2.5
ansibel --version #驗證ansible是否安裝成功
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章