linux下安裝部署ansiblepython
介紹linux
Ansible是一種批量部署工具,如今運維人員用的最多的三種開源集中化管理工具備:puppet,saltstack,ansible,各有各的優缺點,其中saltstack和ansible都是用python開發的。ansible其實準確的說只提供了一個框架,它要基於不少其餘的python模塊才能工做的,因此在安裝ansible的時候你要再裝不少其餘的依賴包的。git
好處之一是使用者能夠開發本身的模塊,放在裏面使用。第二個好處是無需在客戶端安裝agent,更新時,只需在操做機上進行一次更新便可。第三個好處是批量任務執行能夠寫成腳本,並且不用分發到遠程就能夠執行。github
正文json
注意:強烈建議升級python版本到2.6以上,否則運行會出錯或者有些功能會沒有,在編譯安裝其餘包的時候也會由於兼容問題報錯。vim
(1)、python2.7安裝服務器
https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz框架
tar xvzf Python-2.7.8.tgz運維
cd Python-2.7.8python2.7
./configure --prefix=/usr/local
make
make install
將python頭文件拷貝到標準目錄,以免編譯ansible時,找不到所需的頭文件
cd /usr/local/include/python2.7
cp -a ./* /usr/local/include/
備份舊版本的python,並符號連接新版本的python
cd /usr/bin
mv python python.old
ln -s /usr/local/bin/python2.7 /usr/local/bin/python
rm -f /usr/bin/python && cp /usr/local/bin/python2.7 /usr/bin/python
修改yum腳本,使其指向舊版本的python,已避免其沒法運行
vim /usr/bin/yum
!/usr/bin/python --> #!/usr/bin/python2.4
Tips :若python版本已經爲2.6或以上,則不須要再重裝python,只是還須要安裝python開發包:python-dev(有的操做系統下爲python-devel)
yum install python-devel
or
yum install python-dev
(2)、setuptools模塊安裝
https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz
tar xvzf setuptools-7.0.tar.gz
cd setuptools-7.0
python setup.py install
安裝好setuptools後就能夠利用easy_install這個工具安裝下面的python模塊了,但個人電腦是虛擬機,配置過低了,因此基本沒法安裝,因此只好一個一個下載下來再安裝了。
(3)、pycrypto模塊安裝
https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
tar xvzf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1
python setup.py install
(4)、PyYAML模塊安裝
http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz
tar xvzf yaml-0.1.5.tar.gz
cd yaml-0.1.5
./configure --prefix=/usr/local
make --jobs=`grep processor/proc/cpuinfo | wc -l`
make install
https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz
tar xvzf PyYAML-3.11.tar.gz
cd PyYAML-3.11
python setup.py install
(5)、Jinja2模塊安裝
https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.9.3.tar.gz
tar xvzf MarkupSafe-0.9.3.tar.gz
cd MarkupSafe-0.9.3
python setup.py install
https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz
tar xvzf Jinja2-2.7.3.tar.gz
cd Jinja2-2.7.3
python setup.py install
(6)、paramiko模塊安裝
https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz
tar xvzf ecdsa-0.11.tar.gz
cd ecdsa-0.11
python setup.py install
https://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz
tar xvzf paramiko-1.15.1.tar.gz
cd paramiko-1.15.1
python setup.py install
(7)、simplejson模塊安裝
https://pypi.python.org/packages/source/s/simplejson/simplejson-3.6.5.tar.gz
tar xvzf simplejson-3.6.5.tar.gz
cd simplejson-3.6.5
python setup.py install
(8)、ansible安裝
https://github.com/ansible/ansible/archive/v1.7.2.tar.gz
tar xvzf ansible-1.7.2.tar.gz
cd ansible-1.7.2
python setup.py install
(9)、SSH免密鑰登陸設置
生成公鑰/私鑰
ssh-keygen -t rsa -P ''
寫入信任文件(將/root/.ssh/id_rsa_storm1.pub分發到其餘服務器,並在全部服務器上執行以下指令):
cat /root/.ssh/id_rsa_storm1.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
(10)、拷貝,生成ansible配置文件
a 配置文件/etc/ansible/ansible.cfg
mkdir -p /etc/ansible
cp ansible-1.7.2/examples/ansible.cfg /etc/ansible/
b 配置文件/etc/ansible/hosts
vim /etc/ansible/hosts
[test]
192.168.1.3
192.168.1.4
測試
ansible test -m command -a 'uptime'
用來測試遠程主機的運行狀態
ansible test -m ping
參看全部的參數
ansible-doc -l