自动化运维工具Ansible使用教程

ansible是一个基于Python开发的轻量级自动化运维管理工具,可以用来批量执行命令,安装程序,支持playbook编排。它通过ssh协议来连接主机,去中心化,相对比puppet和saltstack无需安装客户即可实现文件传输、命令执行、应用部署、配置管理、任务编排等,显得更为简单与轻量。ansible只是提供一种框架,其基于模块工作的,本身没有批量部署。

1.2 核心组件:

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

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

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

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

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

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

1.4 流程架构:

wKioL1ncR6eADyO1AAEvXQjifhw076.png

wKioL1ncXunh8DRkAAHwKsC_JoE071.png

1.5 优缺点:

优点:

轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

批量任务执行可以写成脚本,而且不用分发到远程就可以执行;

使用python编写,维护更简单;

使用push方式,控制节点向其他节点推方式,可先测试变更,方便控制管理。

缺点:

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

二、安装部署

名称   主机名   IP地址  
A主机   ansible-A   172.20.4.10  
B主机   ansible-B   172.20.4.11  
C主机   ansible-C   172.20.4.12  

2.1 Ansible安装

安装方式可使用源码编译安装,也可以更新yum源后yum安装,由于依赖较多模块,编译安装易出现异常,此次采用yum安装,CentOS 6.x安装epel源后,直接可以yum安装,python版本2.6以上,在各个节点均需要安装

rpm -ivh http://mirrors.sohu.com/Fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install ansible -y

2.2 各主机SSH互信

例如:在A主机执行以下命令,将公钥发送到B主机

ssh-keygen -t rsa                             #创建公钥与私钥

ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.20.4.11            #将公钥传输给对端服务器

此时A服务器可以免密码登录B服务器

wKioL1ncYvGgfSjkAACbI1nUyrk391.png

同样方式,可以做A到C主机,如果控制端为B主机,需要B反向将公钥发布到A主机,实现互信。

2.3 命令参数介绍

Usage: ansible <host-pattern> [options]

 

Options:

-a MODULE_ARGS, --args=MODULE_ARGS                 #制定调用的模块(ansible-doc查看模块)

module arguments

--ask-vault-pass      ask for vault password         #加密文件

-B SECONDS, --background=SECONDS              #后台等待多少秒

run asynchronously, failing after X seconds

(default=N/A)

-C, --check           don't make any changes; instead, try to predict some      #不执行命令,值执行命令检查

of the changes that may occur

-D, --diff            when changing (small) files and templates, show the

differences in those files; works great with --check

-e EXTRA_VARS, --extra-vars=EXTRA_VARS                                  #调用外部变量

set additional variables as key=value or YAML/JSON

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c849b5bd94d72a9d2190dfbc0266ac5c.html