自动化运维工具Ansible,简介及部署

一.简介

  • Ansible是一个部署一群远程主机的工具,可以用来批量执行命令,安装程序,支持playbook编排。
  • Ansible通过SSH协议来连接主机,去中心化,相对比puppet和saltstack无需安装客户即可实现文件传输、命令执行、应用部署、配置管理、任务编排等,显得更为简单与轻量。
  • Ansible是python开发的,故依赖一些python库和组件,如:paramiko,PyYaml和jinja三个关键组件
  • Ansible只是提供一种框架,其基于模块工作的,本身没有批量部署。

二.核心组件

  • 1.连接插件connection plugins:负责和被监控端实现通信;
  • 2.host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
  • 3.各种模块核心模块、command模块、自定义模块;
  • 4.借助于插件完成记录日志邮件等功能;
  • 5.playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

##常用模块##

模块 作用
copy模块 把主控端/root目录下的a.sh文件拷贝到到指定节点上
file模块 更改指定节点上/tmp/t.sh的权限为755,属主和属组为root
cron模块 在指定节点上定义一个计划任务,每隔3分钟到主控端更新一次时间
group模块 在所有节点上创建一个组名为nolinux,gid为2014的组
user模块 在指定节点上创建一个用户名为nolinux,组为nolinux的用户
yum模块 在指定节点上安装 lrzsz 服务
service模块 启动指定节点上的 puppet 服务,并让其开机自启动
script模块 在指定节点上执行/root/a.sh脚本(该脚本是在ansible控制节点上的)
ping模块 检查指定节点机器是否还能连通
command模块 在指定节点上运行hostname命令
raw模块 在10.1.1.113节点上运行hostname命令
get_url模块 将指定文件下载到指定节点的/tmp目录下
synchronize模块 将主控方/root/a目录推送到指定节点的/tmp目录下

三.工具特性

  • 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:可实现多级指挥。

##流程架构##
在这里插入图片描述
在这里插入图片描述

四.优缺点

##优点##

  • 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
  • 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
  • 使用python编写,维护更简单;
  • 使用push方式,控制节点向其他节点推方式,可先测试变更,方便控制管理。

##缺点##

  • 基于ssh,串行,故超过500台主机效率较低;

五.Ansible安装部署

1.实验准备

主机 IP地址
管理端 192.168.160.128
被管理端1 192.168.160.129
被管理端2 192.168.160.130

2.Ansible环境部署

##首先关闭三台主机的防火墙##

yum install -y epel-release      #安装epel源
yum install -y ansible           #安装ansible源
yum install -y tree              #安装树形展示结构
ansible --version                #查看ansible版本
tree /etc/ansible                #树形结构展示文件夹

在这里插入图片描述

cd /etc/ansible
vim hosts                        #配置主机清单
[webserver]
192.168.160.129                  #被控制端1,ip
[mysql]
192.168.160.130                  #被控制的2,ip

在这里插入图片描述

##配置密钥对验证##
ssh-keygen -t rsa
ssh-copy-id [email protected]
ssh-copy-id [email protected]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.Ansible命令行模块

##command模块##

命令格式:ansible [主机] [-m 模块] [-a args]
ansible-doc -l                                 #列出所有已安装的模块,按q退出
ansile-doc -s yum                              #列出yum模块描述信息和操作动作

ansible 192.168.160.129 -m command -a 'date'   #指定ip执行date
ansible webserver -m command -a ‘date’         #指定分类执行date
ansible mysql -m command -a ‘date’
ansible all -m command -a 'date'               #所有hosts主机执行date命令
ansible all -a 'ls /'                          #如果不加-m模块,则默认运行command模块

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LI_MINGXUAN/article/details/115453706