Ansible原理篇:自动化运维工具简介、Ansible原理、安装、参数详解,ansible原理篇


Ansible原理篇:自动化运维工具简介、Ansible原理、安装、参数详解

  • Ansible原理篇:自动化运维工具简介、Ansible原理、安装、参数详解
    • 一、自动化运维工具简介
      • 1、Puppet特点
      • 2、SaltStack特点
      • 3、Ansible特点
    • 二、Ansible原理
    • 三、Ansible管理工具安装配置
    • 四、Ansible工具参数

一、自动化运维工具简介

目前常见的运维自动化管理工具主要是Puppet、SaltStack、Ansible,下面分别简述它们的特点。

1、Puppet特点

Puppet是早期的Linux自动化运维工具,是一种LINUX、WINDOWS、UNIX平台的集中配置管理系统,到现在已经非常成熟,可以批量管理远程服务器,模块丰富,配置复杂,基于Ruby语言编写。是最典型的C/S结构,需要安装服务端和客户端 。
Puppet采用C/S星状的结构,所有的客户端和一个或者多个服务器交互,每个客户端周期地(默认半个小时)向服务器发送请求,获得最新的配置信息,保证和配置信息同步。
每个Puppet客户端周期地连接一次服务器,下载最新的配置文件,并且严格按照配置文件来配置客户端。配置完成后,Puppet客户端可以反馈给服务器端一个消息,如果出错也会给服务器端反馈一个消息。
Puppet适用于服务器管理的整个过程,比如初始安装、配置、更新等

2、SaltStack特点

SaltStack和Puppet一样,也是C/S模式,需要安装服务端和客户端,基于Python编写,加入了MQ消息同步,可以使执行命令和执行结果高效返回,但其执行过程需要等待客户端全部返回,如果客户端没有及时返回或者没有响应的话,可能会导致部分机器没有执行结果。

3、Ansible特点

Ansible和SaltStack一样是基于Python开发,Ansible只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为Ansible基于SSH远程管理,而Linux服务器大部分都离不开SSH,所以Ansible不需要为配置添加额外的支持。
Ansible安装使用都很简单,而且基于上千个插件和模块,实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。
有时候会觉得Ansible比SaltStack执行效率慢,其实并不是软件本身的问题,二是由于SSH服务慢,可以通过优化SSH连接速度和使用Ansible加速模块提高效率

二、Ansible原理

Ansible可以简化管理员的自动化配置管理和流程控制方式。它利用推送方式对客户系统配置,这样所有的工作都可以在主服务器上完成。
运行Ansible的服务器叫做”管理节点”,通过Ansible进行管理的服务器叫做“受控节点”

Ansible管理工具的优点为:

  • 轻量级,更新时只需要在操作机上进行一次更新即可
  • 采用SSH协议
  • 不需要客户端安装agent
  • 批量任务执行可以写成脚本,并且不需要分发到客户端
  • 使用Python编写,维护简单
  • 支持sudo普通用户命令
  • 去中心化管理

Ansible的原理拓扑图为

可以看到Ansible由五部分组成:

  • Ansible : 核心
  • Modules : 包括 Ansible 自带的核心模块及自定义模块
  • Plugins : 完成模块功能的补充,包括连接插件、邮件插件等
  • Playbooks : 剧本;定义 Ansible 多任务配置文件,由Ansible 自动执行
  • host Inventory : 定义 Ansible 管理主机的清单

三、Ansible管理工具安装配置

Ansible可以工作在多个系统平台上,Linux、MAC都可以,对Python版本的最低要求是Python2.6以上。

Ansible官方文档

安装管理主机有很多中安装方法:可以通过pip安装、也可以通过yum源或者在github上安装源码安装,还提供了ubuntu主机的apt安装方法,具体可以通过查看官方文档。因为我用的主机是rhel7.2的,所以直接用yum源安装。用红帽系统的主机还要注意,如果是Fedora主机,可以直接安装,但rhel和centos需要先安装EPEL源,但如果使用pip安装,那么配置文件需要自己创建配置

 ##先下载安装epel源
[root@ansible ~]# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

 ###上面那个是7系列主机的EPEL源地址,6系列主机的地址为
  https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

 ##EPEL源安装好了之后直接安装Ansible
[root@ansible ~]# yum install -y ansible

 ##官方给出的源地址有一个bug,上面没有依赖包python2-pyasn1,可以在
 ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/7.4/x86_64/os/Packages/python2-pyasn1-0.1.9-7.el7.noarch.rpm下载,下载后直接安装,然后再重新安装ansible

安装完成后,Ansible工具的默认主目录为/etc/ansible/,其中hosts文件为被管理主机IP或者主机名列表,ansible.cfg是ansible的主配置文件,roles目录为角色或者插件路径,默认为空

Ansible是基于多模块管理,常用的Ansible工具管理模块有:command、shell、script、yum、copy、file、async、docker、cron、ping、sysctl、user等等。可以使用ansible-doc -l命令查看Ansible支持的模块,也可以使用ansible-doc module_name查看某个模块的帮助文档

四、Ansible工具参数

基于Ansible批量管理,需要将被管理的服务器IP列表添加到/etc/ansible/hosts文件中,当然本机也可以是被管理机器

Ansible自动运维工具管理客户端的案例操作,由于Ansible管理远程服务器是基于SSH,在登录远程服务器执行命令时需要远程服务器的用户名和密码,也可以加入-k参数手动输入密码或者基于ssh-keygen生成免密钥

Ansible主要参数详解:

  • -v,-verbose:打印详细模式
  • -i PATH,-inventory=PATH:指定host文件路径
  • -f NUM,-forks=NUM:指定fork开启同步进程的个数,默认是5
  • -m NAME,-module-namea=NAME:指定module模块,默认为command模块
  • -a MODULE_ARGS:module模块的参数或者命令
  • -k,-ask-pass:输入远程被管理端的密码
  • -sudo:基于sudo执行
  • -K,-ask-sudo-pass:提示输入sudo密码与sudo一起使用
  • -u USERNAME:执行执行用户
  • -C,–check:测试执行过程,不改变真实内容,相当于预演
  • -T TIMEOUT:执行命令超时事件,默认为10s
  • –version:查看Ansible软件的版本信息

相关内容

    暂无相关文章