常用自动化运维工具简介和Ansible安装

自动化运维工具

Puppet

特点:
Puppet是早期的Linux自动化运维工具,是一种LINUX、WINDOWS、UNIX平台的集中配置管理系统,到现在已经非常成熟,可以批量管理远程服务器,模块丰富,配置复杂,基于Ruby语言编写。是最典型的C/S结构,需要安装服务端和客户端

Puppet采用C/S星状的结构,所有的客户端和一个或者多个服务器交互,每个客户端周期地(默认半个小时)向服务器发送请求,获得最新的配置信息,保证和配置信息同步。

每个Puppet客户端周期地连接一次服务器,下载最新的配置文件,并且严格按照配置文件来配置客户端。配置完成后,Puppet客户端可以反馈给服务器端一个消息,如果出错也会给服务器端反馈一个消息。

Puppet适用于服务器管理的整个过程,比如初始安装、配置、更新等

优缺点:

  • 优点
    • 模块由Ruby或Ruby子集编写
    • push命令可以即可触发变更
    • Web界面生成处理报表、资源清单、实时节点管理
    • 代理运行端进行详细、深入的报告和对节点进行配置
  • 缺点
    • 相对其他工具较复杂,需学习Puppet的DSL或Ruby
    • 安装过程缺少错误校验和产生错误报表

SaltStack

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

优缺点:

  • 优点
    • 状态文件可用简单YAML配置模块或复杂的Python/PyDSL脚本
    • 与客户端可以基于SSH或在被管节点安装代理
    • Web界面可看到运行的工作、minion状态、事件日志、可在客户端执行命令
    • 扩展能力极强
  • 缺点
    • Web界面像毒药竞争产品不稳定与相对不完善
    • 缺乏生成深度报告的能力

Ansible

特点:
Ansible和SaltStack一样是基于Python开发,Ansible只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为Ansible基于SSH远程管理,而Linux服务器大部分都离不开SSH,所以Ansible不需要为配置添加额外的支持。

Ansible安装使用都很简单,而且基于上千个插件和模块,实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。

有时候会觉得Ansible比SaltStack执行效率慢,其实并不是软件本身的问题,二是由于SSH服务慢,可以通过优化SSH连接速度和使用Ansible加速模块提高效率.

优缺点:

  • 优点
    • 模块可以用任何语言开发
    • 备管节点不需要安装代理软件
    • 有Web管理界面、可配置用户、组、资源清单和执行Playbook
    • 安装、运行极其简单
  • 缺点
    • 对备管理节点为Windows有待加强
    • Web管理界面是内置的Ansible的一部分
    • 需导入资源清单
    • 执行效率较低

技术特点对比:

名称 Puppet SaltStack Ansible
开发语言 Ruby Python Python
客户端
二次开发 不支持 支持 支持
通信验证
通信加密 标准SSL协议 AES加密 OpenSSH
配置文件格式 Ruby语法格式 YAML YAML

安装Ansible

//配置yum源
[root@localhost ~]# cat /etc/yum.repos.d/base.repo 

[BaseOS]
name=BaseOS
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/x86_64/os/ 
enabled=1
gpgcheck=0
 
[AppStream]
name=AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/AppStream/x86_64/os/
enabled=1
gpgcheck=0
 
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
enabled=1
gpgcheck=0
//安装ansible
[root@localhost ~]# yum -y install ansible
[root@localhost ~]# ansible --version
ansible [core 2.12.7]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.8.13 (default, Jun 24 2022, 15:27:57) [GCC 8.5.0 20210514 (Red Hat 8.5.0-13)]
  jinja version = 2.11.3
  libyaml = True
//通过使用setup模块验证localhost上的ansible_python_version
[root@localhost ~]# ansible -m setup localhost|grep ansible_python_version
        "ansible_python_version": "3.8.13",

你可能感兴趣的:(运维,自动化,ansible)