内容简介:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:(1)、连接插件connection plugins:负责和被监控端实现通信;(2)、host inventory:指定操作的主机,是一个配置文件里面定义
一、基础介绍
1、简介
ansible是新出现的自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
2、总体架构
3、特性
(1)、no agents:不需要在被管控主机上安装任何客户端;
(2)、no server:无服务器端,使用时直接运行命令即可;
(3)、modules in any languages:基于模块工作,可使用任意语言开发模块;
(4)、yaml,not code:使用yaml语言定制剧本playbook;
(5)、ssh by default:基于SSH工作;
(6)、strong multi-tier solution:可实现多级指挥。
4、优点
(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
(3)、使用python编写,维护更简单,ruby语法过于复杂;
(4)、支持sudo。
5、任务执行流程
二、Ansible基础安装与配置
1、Ansible基础安装
(1)、python2.7安装
#wget 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 --jobs=`grep processor/proc/cpuinfo | wc -l` # make install ## 将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件 # cd /usr/local/include/python2.7 # cp -a ./* /usr/local/include/ ## 备份旧版本的python,并符号链接新版本的python # cd /usr/bin # mv python python2.6 # ln -s /usr/local/bin/python ## 修改yum脚本,使其指向旧版本的python,已避免其无法运行 # vim /usr/bin/yum #!/usr/bin/python --> #!/usr/bin/python2.6
(2)、setuptools模块安装
#wget 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
(3)、pycrypto模块安装
#wget 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模块安装
#wget 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 //作业数是在编译的时候指定主机的CPU个数,并行处理的作业数和编译的效率直接相关,所以需要设置合适的作业数量。 #wget 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
2、Ansible配置
(1)、SSH免密钥登录设置
## 生成公钥/私钥并传到目标服务器(在10.123.167.15执行)
#将私钥加到目标服务器的认证文件并授权(在34、51、59、61、63执行)
(2)、ansible配置
# mkdir -p /etc/ansible # cp /opt/ansible/ansible-1.7.2/examples/ansible.cfg /etc/ansible/ansible.cfg # vim /etc/ansible/ansible.cfg …… private_key_file = /root/.ssh/id_rsa …… ## 主机组定义 # vim /etc/ansible/hosts [hwb_cluster] 10.150.xx.34 10.150.xx.51 10.150.xx.59 10.150.xx.61 10.150.xx.63 10.150.xx.88 10.150.xx.89
(3)、简单测试
# ansible hwb_cluster -m command -a 'uptime'
Ansible适用于管理多台服务器,在ansible主机上执行对应的命令实际上是通过ssh协议到对应的受控服务器上执行命令,省掉了我们很多不必要的工作,很方便,如果大家对自动化运维感兴趣的话可以自己试一下,这篇文档入门是完全没问题的,后面就要去学一下playbooks语法来写脚本了。
以上所述就是小编给大家介绍的《如何通过Ansible来管理上千台服务器??》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 通过架构改进,我们计划优化掉 300+ 台服务器
- Jndiat:通过T3协议攻击Weblogic服务器
- 通过服务器信息维护进行“半自动化”运维
- Golang通过TCP与远端服务器交互
- 通过URL参数请求不同的后端服务器
- 让 PHP 的 mail() 通过代理 SMTP 服务器发送邮件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Intersectional Internet
Safiya Umoja Noble、Brendesha M. Tynes / Peter Lang Publishing / 2016
From race, sex, class, and culture, the multidisciplinary field of Internet studies needs theoretical and methodological approaches that allow us to question the organization of social relations that ......一起来看看 《The Intersectional Internet》 这本书的介绍吧!