Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优势。实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible是基于模块工做的,自己没有批量部署的能力。真正具备批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。python
说明:以上内容大可能是基于他人分享的基础上总结而来,学习借鉴之用;linux
系统平台: CentOS 7.3
Ansible Server: 192.168.8.55
Ansible Client: 192.168.8.66web
(1)写hosts记录json
[root@Ansible ~]# echo "192.168.8.55 Ansible" >> /etc/hosts [root@Ansible ~]# echo "192.168.8.66 Client" >> /etc/hosts
(2)关闭firewalld和selinuxvim
[root@Ansible ~]# systemctl stop firewalld && systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
(3)关闭selinuxcentos
[root@Ansible ~]# setenforce 0 [root@Ansible ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
(1)配置好epel yum源安装相应的基础模块,可使用yum直接安装ruby
[root@Ansible ~]# yum -y install python PyYAML python-paramiko python-jinja2 python-simplejson
(2)安装Ansible服务器
[root@Ansible ~]# yum -y install ansible
Ansible安装所依赖插件较多,因此首先安装插件
[root@Ansible ~]# yum -y install gcc zlib zlib-devel openssl openssl-devel libffi-devel
(1)python3.6安装
Ansible是用Python开发的,使用Ansible须要操做系统有Python,建议Python版本2.6以上。架构
[root@Ansible ~]# wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz [root@Ansible ~]# tar xvzf Python-3.6.4.tgz -C /usr/src/ [root@Ansible ~]# cd /usr/src/Python-3.6.4/ [root@Ansible Python-3.6.4]# ./configure --prefix=/usr/local [root@Ansible Python-3.6.4]# make [root@Ansible Python-3.6.4]# make install
将python头文件拷贝到标准目录,以免编译ansible时,找不到所需的头文件框架
[root@Ansible Python-3.6.4]# cd /usr/local/include/python3.6m/ [root@Ansible python3.6m]# cp -a ./* /usr/local/include/
备份旧版本的python,并符号连接新版本的python
[root@Ansible python3.6m]# cd /usr/bin/ [root@Ansible bin]# mv python python.old [root@Ansible bin]# ln -s /usr/local/bin/python3.6 /usr/local/bin/python [root@Ansible bin]# rm -rf /usr/bin/python [root@Ansible bin]# cp /usr/local/bin/python3.6 /usr/bin/python
修改yum脚本,使其指向旧版本的python,已避免其没法运行
[root@Ansible bin]# vim /usr/bin/yum
将#!/usr/bin/python修改成#!/usr/bin/python2.7
[root@Ansible bin]# vim /usr/libexec/urlgrabber-ext-down
将#!/usr/bin/python修改成#!/usr/bin/python2.7
[root@Ansible bin]# python --测试安装版本是否为Python 3.6.4 Python 3.6.4 (default, Apr 17 2018, 11:03:21) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> exit() --退出python
(2)setuptools模块安装
[root@Ansible ~]# wget https://files.pythonhosted.org/packages/72/c2/c09362ab29338413ab687b47dab03bab4a792e2bbb727a1eb5e0a88e3b86/setuptools-39.0.1.zip [root@Ansible ~]# unzip setuptools-39.0.1.zip -d /usr/src/ [root@Ansible ~]# cd /usr/src/setuptools-39.0.1/ [root@Ansible setuptools-39.0.1]# python setup.py install
安装好setuptools后就能够利用easy_install这个工具安装下面的python模块了,但个人电脑是虚拟机,配置过低了,因此基本没法安装,因此只好一个一个下载下来再安装了。
(3)pycrypto模块安装
[root@Ansible ~]# wget https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz [root@Ansible ~]# tar xvzf pycrypto-2.6.1.tar.gz -C /usr/src/ [root@Ansible ~]# cd /usr/src/pycrypto-2.6.1/ [root@Ansible pycrypto-2.6.1]# python setup.py install
(4) PyYAML模块安装
[root@Ansible ~]# wget http://pyyaml.org/download/libyaml/yaml-0.1.7.tar.gz [root@Ansible ~]# tar xvzf yaml-0.1.7.tar.gz -C /usr/src/ [root@Ansible ~]# cd /usr/src/yaml-0.1.7/ [root@Ansible yaml-0.1.7]# ./configure --prefix=/usr/local [root@Ansible yaml-0.1.7]# make --jobs=`grep processor /proc/cpuinfo | wc -l` [root@Ansible yaml-0.1.7]# make install [root@Ansible ~]# wget http://pyyaml.org/download/pyyaml/PyYAML-3.12.tar.gz [root@Ansible ~]# tar xvzf PyYAML-3.12.tar.gz -C /usr/src/ [root@Ansible ~]# cd /usr/src/PyYAML-3.12/ [root@Ansible PyYAML-3.12]# python setup.py install
(5)Jinja2模块安装
[root@Ansible ~]# wget https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.9.3.tar.gz [root@Ansible ~]# tar xvzf MarkupSafe-0.9.3.tar.gz -C /usr/src/ [root@Ansible ~]# cd /usr/src/MarkupSafe-0.9.3/ [root@Ansible MarkupSafe-0.9.3]# python setup.py install [root@Ansible ~]# wget https://files.pythonhosted.org/packages/56/e6/332789f295cf22308386cf5bbd1f4e00ed11484299c5d7383378cf48ba47/Jinja2-2.10.tar.gz [root@Ansible ~]# tar xvzf Jinja2-2.10.tar.gz -C /usr/src/ [root@Ansible ~]# cd /usr/src/Jinja2-2.10/ [root@Ansible Jinja2-2.10]# python setup.py install
(6)paramiko模块安装
[root@Ansible ~]# wget https://files.pythonhosted.org/packages/f9/e5/99ebb176e47f150ac115ffeda5fedb6a3dbb3c00c74a59fd84ddf12f5857/ecdsa-0.13.tar.gz [root@Ansible ~]# tar xvzf ecdsa-0.13.tar.gz -C /usr/src/ [root@Ansible ~]# cd /usr/src/ecdsa-0.13/ [root@Ansible ecdsa-0.13]# python setup.py install [root@Ansible ~]# https://files.pythonhosted.org/packages/29/65/83181630befb17cd1370a6abb9a87957947a43c2332216e5975353f61d64/paramiko-2.4.1.tar.gz [root@Ansible ~]# tar xvzf paramiko-2.4.1.tar.gz -C /usr/src/ [root@Ansible ~]# cd /usr/src/paramiko-2.4.1/ [root@Ansible paramiko-2.4.1]# python setup.py install
(7)simplejson模块安装
[root@Ansible ~]# wget https://files.pythonhosted.org/packages/0d/3f/3a16847fe5c010110a8f54dd8fe7b091b4e22922def374fe1cce9c1cb7e9/simplejson-3.13.2.tar.gz [root@Ansible ~]# tar xvff simplejson-3.13.2.tar.gz -C /usr/src/ [root@Ansible src]# cd /usr/src/simplejson-3.13.2/ [root@Ansible simplejson-3.13.2]# python setup.py install
(8) ansible安装
[root@Ansible ~]# wget https://files.pythonhosted.org/packages/4a/3b/9d98e132074bb6a3f18fd811db2819fbde6fc8a26fad9a40b49e53cb2455/ansible-2.5.0.tar.gz [root@Ansible ~]# tar xf ansible-2.5.0.tar.gz -C /usr/src/ [root@Ansible ~]# cd /usr/src/ansible-2.5.0/ [root@Ansible ansible-2.5.0]# python setup.py install
注:centos7.0安装Ansible后发现找不到ansible.cfg,配置文件的路径以下图,并将配置文件拷贝过去
[root@Ansible ansible-2.5.0]# cd examples/ [root@Ansible examples]# pwd --注意路径 /usr/src/ansible-2.5.0/examples [root@Ansible examples]# ls ansible.cfg hosts [root@Ansible examples]# mkdir /etc/ansible --建立ansible目录 [root@Ansible examples]# cp ansible.cfg hosts /etc/ansible/ --拷贝文件 [root@Ansible examples]# ls -l /etc/ansible/ 总用量 24 -rw-r--r-- 1 root root 19315 4月 17 14:25 ansible.cfg -rw-r--r-- 1 root root 1016 4月 17 14:25 hosts
[root@Ansible ~]# 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: bc:4e:4e:5f:61:a3:37:08:b0:c4:00:98:90:5b:c6:9f root@Ansible.01.com The key's randomart image is: +--[ RSA 2048]----+ |o=... | |+ + o | | + . .+ | |. E. + | | . S + | | o + o | | + o + | | = . o . | | o . | +-----------------+ [root@Ansible ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys [root@Ansible ~]# chmod 600 /root/.ssh/authorized_keys
将公钥传给被管理的机器节点
[root@Ansible ~]# scp /root/.ssh/authorized_keys 192.168.8.66:/root/.ssh/ root@192.168.8.66's password: authorized_keys 100% 401 0.4KB/s 00:00
[root@Ansible ~]# vim /etc/ansible/hosts --文件末尾添加如下内容 [web] 192.168.8.55 [root@Ansible ~]# ansible web -m command -a 'uptime' 192.168.8.55 | SUCCESS | rc=0 >> 14:56:03 up 12:53, 4 users, load average: 0.00, 0.01, 0.05
至此,Ansible的安装配置已经完成,接下来进行模块的讲解。