redhat的ISO系统文件里没有带有ansible,如果网络有限制,及没有注册等因为,安装ansible还是比较麻烦的,比如我,之前装了两三天没装上,后面再过两个月重装,才装上。这里介绍几种安装方法
1、安装python
在安装之前,先确认python版本,当前Ansible可以从装有Python 2(2.7版)或Python 3(3.5版及更高版本)的任何计算机上运行,不支持Windows。
查看python版本的命令:
python --version
如果版本达不到要求,可以安装,如下安装python2.7.8方法:
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.8
./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

2、rpm包安装: EPEL源
这个适合可以访问公网,且注册了或配置了centos yum服务了,这个可以把相关依赖都装上,很方便。

yum install ansible

3、编译安装:
这个在没有公网的情况下,可以自己下载如下的的各种包,手工安装:
先下载如下各包:
Python-2.7.8.tgz
setuptools-7.0.tar.gz
pycrypto-2.6.1.tar.gz
pycrypto-2.6.1.gz
yaml-0.1.5.tar.gz
MarkupSafe-0.9.3.tar.gz
PyYAML-3.11.tar.gz
Jinja2-2.7.3.tar.gz
ecdsa-0.11.tar.gz
paramiko-1.15.1.tar.gz
simplejson-3.6.5.tar.gz
ansible-1.7.2.tar.gz

然后上传服务器,打包成ansible:

cd /opt/ansiable/
tar xvzf setuptools-7.0.tar.gz
cd setuptools-7.0/
python setup.py install
cd ../
tar -zxvf   pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1/
python setup.py install
cd ../
tar -zxvf  yaml-0.1.5.tar.gz
./configure --prefix=/usr/local

make
make install

cd ../
tar -zxvf PyYAML-3.11.tar.gz
cd PyYAML-3.11
python setup.py install

cd ../
tar -zxvf MarkupSafe-0.9.3.tar.gz
cd MarkupSafe-0.9.3
python setup.py install

cd ../
tar -zxvf Jinja2-2.7.3.tar.gz
 python setup.py install

cd ../
tar -zxvf ecdsa-0.11.tar.gz
cd ecdsa-0.11
python setup.py install

cd ../
tar -zxvf  paramiko-1.15.1.tar.gz
cd paramiko-1.15.1/
python setup.py install

cd ../
tar -zxvf  simplejson-3.6.5.tar.gz
cd simplejson-3.6.5/
 python setup.py install

cd ../
tar -zxvf ansible-1.7.2.tar.gz
cd ansible-1.7.2/
 python setup.py install

mkdir -p /etc/ansible
cd /opt/ansible-1.7.2
cp examples/ansible.cfg /etc/ansible/
vi /etc/ansible/hosts
yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
tar xf ansible-1.5.4.tar.gz
cd ansible-1.5.4
python setup.py build
python setup.py install
mkdir /etc/ansible
cp -r examples/* /etc/ansible

3、Git方式安装

##需要先安装pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
##安装相关python依赖包
pip install  -r ./requirements.txt

4、pip安装:pip是安装Python包的管理器,类似yum

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
###这个会把相关的python依赖包装上
pip install  ansible

确认安装:ansible --version
————————————————

5、无密码登录实现
5.1、用ssh-keygen创建公钥(每台服务器都需要执行)
[root@centos1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
a0:85:f4:58:d4:c7:2f:d9:ae:b1:04:91:b1:a0:9e:93 root@centos1
The key's randomart image is:
+--[ RSA 2048]----+
| ..+..+ |
| . * .+.o |
| + + .o + |
| . = .. o o |
| E S. o |
| . o . |
| . + |
| o |
| |
+-----------------+

免密码互通,直接回车完成。

ssh-keygen:生成秘钥
其中:
-t指定算法
-f 指定生成秘钥路径
-N 指定密码

5.2、查看生成的钥匙
[root@centos1 ~]# cd .ssh/
[root@centos1 .ssh]# ls
id_rsa id_rsa.pub known_hosts

5.3 将公钥复制到被管理机器下的.ssh目录下(先确保存在这个目录)
我这里是单机,就不需要执行这步操作。

接着执行

[root@centos1 .ssh]# cat id_rsa.pub >> ~/.ssh/authorized_keys
[root@centos1 .ssh]# ls
authorized_keys id_rsa id_rsa.pub known_hosts

5.4、设置文件和目录权限:
设置authorized_keys权限

chmod 600 authorized_keys

设置.ssh目录权限

chmod 700 -R .ssh

验证是否成功

[root@centos1 .ssh]# ssh 192.168.9.2
Last login: Thu Dec 17 10:15:52 2015 from 192.168.9.1

6、配置ansible
拷贝,生成ansible配置文件
6.1 配置文件/etc/ansible/ansible.cfg
mkdir -p /etc/ansible

#cp ansible-1.7.2/examples/ansible.cfg /etc/ansible/
6.2 配置文件/etc/ansible/hosts
vim /etc/ansible/hosts

[test]
192.168.110.20
192.168.110.30

测试,查看服务器执行时间

ansible test -m command -a 'uptime'

##用来测试远程主机的运行状态

ansible test -m ping

参看所有的参数
ansible-doc -l