说明:
(1)、以上内容大多是基于他人分享的基础上总结而来,学习借鉴之用;
(2)、本次安装基于 CentOS 6.x 系统环境。
1、ansible安装
(1)ansible各种模块下载
https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz
https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz
https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz
https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.9.3.tar.gz
https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz
https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz
https://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz
https://pypi.python.org/packages/source/s/simplejson/simplejson-3.6.5.tar.gz
https://github.com/ansible/ansible/archive/v1.7.2.tar.gz
(2)、Python2.7安装
$ tar xvzf Python-2.7.8.tgz
$ cd Python-2.7.8
$ ./configure --prefix=/usr/local/python
$ make --jobs=`grep processor /proc/cpuinfo | wc -l`
# grep processor /proc/cpuinfo | wc –l 命令解析为统计cpu数量,--jobs为多线程执行
$ make install
将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件
$ cd /usr/local/python/include/python2.7
$ cp -a ./* /usr/local/include/
# 备份旧版本的python,并符号链接新版本的python
$ cd /usr/bin
$ mv python python.old
$ ln -s /usr/local/python/bin/python ./python
# 修改yum脚本,使其指向旧版本的python,已避免其无法运行
$ vim /usr/bin/yum
#!/usr/bin/python --> #!/usr/bin/python.old
(3)、Setuptools模块安装
$ tar xvzf setuptools-7.0.tar.gz
$ cd setuptools-7.0
$ yum install zlib zlib-devel
$ cd ..
$ cd Python
$ make install
$ cd ..
$ cd setupt00ls
$ python setup.py install
(4)、pycrypto模块安装
$ tar xvzf pycrypto-2.6.1.tar.gz
$ cd pycrypto-2.6.1
$ python setup.py install
(5)、PyYAML模块安装
$ tar xvzf yaml-0.1.5.tar.gz
$ cd yaml-0.1.5
$ ./configure --prefix=/usr/local
$ make
$ make install
$ tar zxvf PyYAML-3.11.tar.gz
$ cd PyYAML-3.11
$ python setup.py install
(6)、Jinja2-2.7.3.tar.gz模块安装
$ tar xvzf MarkupSafe-0.9.3.tar.gz
$ cd MarkupSafe-0.9.3
$ python setup.py install
$ tar xvzf Jinja2-2.7.3.tar.gz
$ cd Jinja2-2.7.3
$ python setup.py install
(7)、paramiko模块安装
$ tar xvzf ecdsa-0.11.tar.gz
$ cd ecdsa-0.11
$ python setup.py install
$ tar xvzf paramiko-1.15.1.tar.gz
$ cd paramiko-1.15.1
$ python setup.py install
(8)、simplejson模块安装
$ tar xvzf simplejson-3.6.5.tar.gz
$ cd simplejson-3.6.5
$ python setup.py install
(9)、ansible安装
$ tar xvzf v1.7.2.tar.gz
$ cd ansible-1.7.2
$ python setup.py install
2、Ansible配置
(1)生成公钥私钥
$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_storm1
Your identification has been saved in /root/.ssh/id_rsa_storm1.
Your public key has been saved in /root/.ssh/id_rsa_storm1.pub.
The key fingerprint is:
b9:47:25:1a:32:5c:e5:1d:48:8f:93:b1:f2:7b:06:c6 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| .o+.. |
| . . ..B . |
| + o B + |
| o B + |
| S E |
| + o |
| . o o |
| . o |
| |
+-----------------+
(2)在远程主机生成authorized_keys
$ ssh-copy-id -i ~/.ssh/id_rsa.storm1.pub “root@192.168.100.129”
# root:远程主机用户名;192.168.100.129:远程主机IP;
(3)若ssh非22端口,则根据端口修改命令如下:
$ ssh-copy-id -i /root/.ssh/id_rsa_storm1.pub "-p 12580 root@192.168.100.129"
# 12580:端口号
CentOS7则是:
$ ssh-copy-id -i /root/.ssh/id_rsa_storm1.pub -p 12580 “root@192.168.100.129”
(4) 拷贝,生成ansible配置文件
a 配置文件/etc/ansible/ansible.cfg
$ mkdir -p /etc/ansible
$ cp /root/ansible/ansible-1.7.2/examples/ansible.cfg /etc/ansible/
b 配置文件/etc/ansible/hosts
$ vim /etc/ansible/hosts
[test] 192.168.100.129
若ssh非22端口,则根据端口修改命令如下:
[test]
192.168.100.129
[test:vars]
ansible_ssh_user="root"
ansible_ssh_port=12580
(5)测试
# 将test改成IP也是可以的,改成IP则为执行一台;
$ ansible test -m command -a 'uptime'
192.168.226.129 | FAILED => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue
解决:
$ vim /etc/ansible/ansible.cfg
……
private_key_file = /root/.ssh/id_rsa_storm1
失败:(表示客户机缺少python和python-simplejson)
$ yum install python python-simplejson
测试# ansible test -m ping
成功: