自动化运维工具Ansible实战安装部署

简介:

1,基本介绍

(一)ansible简单介绍 


 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具

(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能


ansible是基于模块工作的,本身没有批量部署的能力

真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

                                                -----来源百度百科


2,基本架构

wKiom1ks60nC_VhzAAIEbf24hkc675.png-wh_50


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工作机制

wKiom1ks6ZjD1oCFAAHC0N9FcEs971.png-wh_50


(二)Ansible的安装与配置


1,安装相应的基础模块,建议使用yum直接安装

[root@GJB-TESTING .ssh]# yum  install  python26 python26-PyYAML  python26-paramiko  python26-ji
nja2   python-simplejson  
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.zju.edu.cn
 * updates: mirrors.163.com
Setting up Install Process
No package python26 available.
No package python26-PyYAML available.
No package python26-paramiko available.
No package python26-jinja2 available.
Resolving Dependencies
--> Running transaction check
---> Package python-simplejson.x86_64 0:2.0.9-3.1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================
 Package                      Arch              Version                   Repository       Size
================================================================================================
Installing:
 python-simplejson            x86_64            2.0.9-3.1.el6             base            126 k
Transaction Summary
================================================================================================
Install       1 Package(s)
Total download size: 126 k
Installed size: 437 k
Is this ok [y/N]: y


2,下载ansible(http://releases.ansible.com/ansible/)可在改页面选择相应的版本进行下载。

[root@Monitor tmp]# wget http://releases.ansible.com/ansible/ansible-2.2.0.0.tar.gz
--2016-11-23 18:06:35--  http://releases.ansible.com/ansible/ansible-2.2.0.0.tar.gz
正在解析主机 releases.ansible.com... 104.25.170.30, 104.25.171.30, 2400:cb00:2048:1::6819:ab1e, ...
正在连接 releases.ansible.com|104.25.170.30|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2441851 (2.3M) [application/x-gzip]
正在保存至: “ansible-2.2.0.0.tar.gz”
100%[======================================================>] 2,441,851   1.36M/s   in 1.7s    
2016-11-23 18:06:42 (1.36 MB/s) - 已保存 “ansible-2.2.0.0.tar.gz” [2441851/2441851])


3,解压下载的文件并安装

[root@Monitor tmp]# tar xf ansible
ansible-2.2.0.0.tar.gz  ansible.cfg             
[root@Monitor tmp]# tar xf ansible-2.2.0.0.tar.gz 
[root@Monitor tmp]# cd ansible-2.2.0.0
[root@Monitor ansible-2.2.0.0]# python setup.py 
bin/          COPYING       lib/          packaging/    setup.cfg     
CHANGELOG.md  docs/         Makefile      PKG-INFO      setup.py      
contrib/      examples/     MANIFEST.in   README.md     VERSION       
[root@Monitor ansible-2.2.0.0]# python setup.py build
running build
running build_py
running build_scripts
[root@Monitor ansible-2.2.0.0]# python setup.py install
........
Using /usr/lib/python2.6/site-packages/Jinja2-2.6-py2.6.egg
Searching for paramiko==1.7.5
Best match: paramiko 1.7.5
Adding paramiko 1.7.5 to easy-install.pth file
 
Using /usr/lib/python2.6/site-packages
Finished processing dependencies for ansible==2.2.0.0
 
[root@Monitor ansible-2.2.0.0]# mkdir /etc/ansible
[root@Monitor ansible-2.2.0.0]# pwd
/tmp/ansible-2.2.0.0
[root@Monitor ansible-2.2.0.0]# cp -r examples/* /etc/ansible


4,ssh免密钥登录设置(只在控制端使用)

[root@Monitor ansible]# 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_web
Your identification has been saved in /root/.ssh/id_rsa_web.
Your public key has been saved in /root/.ssh/id_rsa_web.pub.
The key fingerprint is:
41:c8:41:e7:be:32:4c:68:76:e8:9a:9c:bb:07:f0:06 root@Monitor
The key's randomart image is:
+--[ RSA 2048]----+
|     oooo        |
|      o+         |
|        o        |
|E    o . .       |
| +  = o S        |
|  ++ +   .       |
| . .. + .        |
| . +.  o         |
|  B+             |
+-----------------+
[root@Monitor ansible]# cat /root/.ssh/id_rsa_web
id_rsa_web       id_rsa_web1      id_rsa_web1.pub  id_rsa_web.pub     
[root@Monitor ansible]# cat /root/.ssh/id_rsa_web.pub >> /root/.ssh/authorized_keys


5,将加密的文件(/root/.ssh/id_rsa_web.pub)分发到其它服务器,并在其它的服务器执行如下命令

########在ansible服务器上执行以下语句

[root@Monitor ansible]# scp /root/.ssh/id_rsa_web.pub root@192.168.110.5:/root/.ssh/

reverse mapping checking getaddrinfo for . [192.168.110.5] failed - POSSIBLE BREAK-IN ATTEMPT!

root@192.168.110.5's password: 

id_rsa_web.pub                                                100%  394     0.4KB/s   00:00


######在客户端上执行以下语句   
[root@GJB-TESTING .ssh]# cat /root/.ssh/id_rsa_web.pub >> /root/.ssh/authorized_keys 
[root@GJB-TESTING .ssh]# chmod 600 /root/.ssh/authorized_keys 
[root@GJB-TESTING .ssh]# ll /root/.ssh/authorized_keys 
-rw-------. 1 root root 2861 11月 24 14:21 /root/.ssh/authorized_keys


6,Ansible默认安装好后有一个配置文件/etc/ansible/ansible.cfg,该配置文件中定义了ansible的主机的默认配置部分

如默认是否需要输入密码、是否开启sudo认证、action_plugins插件的位置、hosts主机组的位置、是否开启log功能

默认端口、key文件位置等等,默认的都是关闭,现在需要开启remote_port和private_key_file两个配置


[root@Monitor ansible]# vim ansible.cfg 

remote_port    = 22               ####用于连接远程ssh的端口

private_key_file = /root/.ssh/id_rsa_web    ####用于免密码登陆的


7,定义hosts主机组(被控制主机)

[root@Monitor ansible]# vim hosts 
[web]
192.168.110.4
192.168.110.5
[db]
192.168.110.2


(三)简单的测试


######只测试web组的主机
[root@Monitor ansible]# ansible web -m command -a 'uptime'   
192.168.110.4 | SUCCESS | rc=0 >>
 14:30:31 up 47 days,  5:29,  2 users,  load average: 0.00, 0.00, 0.00
192.168.110.5 | SUCCESS | rc=0 >>
 14:32:28 up 7 days, 22:26,  2 users,  load average: 0.01, 0.02, 0.00


######测试所有的主机
[root@Monitor ansible]# ansible  all -m command -a 'uptime'                             
192.168.110.4 | SUCCESS | rc=0 >>
 14:35:51 up 47 days,  5:34,  2 users,  load average: 0.02, 0.03, 0.00
192.168.110.2 | SUCCESS | rc=0 >>
 14:36:04 up 47 days,  5:47,  4 users,  load average: 0.23, 0.13, 0.10
192.168.110.5 | SUCCESS | rc=0 >>
 14:37:48 up 7 days, 22:32,  2 users,  load average: 0.00, 0.00, 0.00




本文转自 2012hjtwyf 51CTO博客,原文链接:http://blog.51cto.com/hujiangtao/1930676,如需转载请自行联系原作者
相关文章
|
17天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
22天前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
22天前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
53 1
|
27天前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
1月前
|
运维 监控 应用服务中间件
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
27 1
|
1月前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
57 4
|
1月前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
65 4
|
1月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
60 4
|
2月前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
101 1
下一篇
DataWorks