一,自动化运算场景与工具
场景描述
场景
假如我要为100台服务器做同一个操作,比如修改一下yum源
方案
- 手动
- 一台一台用手动或者ssh操作,效率低
- shell
- 写个脚本,到时快,但是每台机器都不太一样,占用进程,免密设置麻烦
概述
自动化运维(AIOps 或 DevOps)是指通过使用自动化工具和技术,将日常的系统运维任务、软件发布、配置管理、监控、日志分析等流程自动化,以提高运维效率、减少人工干预、降低错误率,并确保系统的高可用性和可靠性。自动化运维不仅包括基础设施的管理,还涉及软件生命周期管理、应用程序部署、监控、故障响应和性能优化等多个方面。
常见工具(很多)
- Ansible:一个基于 YAML 配置文件的自动化工具,无代理架构,易于使用,适用于服务器配置、应用部署和任务自动化。(不需要客户端)
- Puppet:一个配置管理工具,使用声明性语言来定义基础设施的状态。适用于大规模环境的自动化管理。(最完整最复杂)
- Chef:类似于 Puppet,Chef 是一个自动化平台,用于管理基础设施的配置、部署和操作。它通过 Ruby 编写自定义资源和任务。
- SaltStack:一个配置管理和自动化工具,支持并行执行任务,能够管理大量节点,特别适合大规模基础设施管理。(需要客户端)
二,ansible的概述与搭建
概述
Ansible 是一个开源的自动化工具,主要用于配置管理、应用程序部署、任务自动化和多台服务器的管理。它的设计目的是简化管理和自动化的过程,通过无代理(Agentless)的方法让运维人员能够以更高效和灵活的方式管理大量主机。Ansible 使用简单的配置语言和现有的 SSH 协议进行操作,能够非常高效地处理从单台机器到数千台机器的配置和管理任务。
1. Ansible 的特点• 简洁性:Ansible 使用 YAML 语法编写配置文件(称为 Playbook),易于理解和维护。• 无代理:Ansible 不需要在被管理的节点上安装任何代理软件。它通过 SSH 或 WinRM 连接到远程主机,执行命令和任务。• 可扩展性:Ansible 提供了多种扩展机制,如自定义模块、插件和动态库存支持,可以轻松集成到现有的基础设施和工具链中。• 跨平台支持:Ansible 可以管理 Linux、Unix、Windows 等多个平台上的主机。• 并行执行:Ansible 支持并行执行任务,能够高效地管理大量主机。
2. Ansible 的组件• 控制节点(Control Node):控制节点是运行 Ansible 的地方,通常是开发者或运维人员的工作站。控制节点负责执行 Playbook 和管理被控制节点。• 被管理节点(Managed Nodes):被管理节点是由 Ansible 管理的远程主机,它们可以是任何支持 SSH 或 WinRM 的设备,如服务器、虚拟机、云实例等。• Playbook:Playbook 是 Ansible 的核心部分,它是用 YAML 编写的配置文件,定义了一系列要在远程主机上执行的任务。Playbook 支持条件逻辑、循环、变量和包含其他 Playbook 等功能。• 模块(Modules):Ansible 提供了大量的模块,用于执行特定的操作,如安装软件包、管理服务、文件操作等。模块是 Ansible 中执行任务的实际代码单元。• 任务(Tasks):任务是 Playbook 中定义的具体操作,每个任务都调用一个模块来执行实际操作。• 库存(Inventory):库存是 Ansible 用来管理远程主机的清单。库存可以是静态的(例如一个简单的 INI 文件),也可以是动态的(例如通过 API 自动生成)。• 插件(Plugins):Ansible 提供了多种插件,可以扩展其功能,包括连接插件、回调插件、动态库存插件等。
3. Ansible 工作流程
Ansible 的工作流程通常是如下几步:1. 控制节点发起请求:用户通过 Ansible 控制节点(通常是本地计算机)发起请求来管理远程主机。2. 通过 SSH 或 WinRM 连接:Ansible 控制节点通过 SSH(Linux/Unix)或 WinRM(Windows)连接到远程主机。3. 执行任务:Ansible 在远程主机上执行任务。任务是通过模块来完成的,Ansible 会依次执行 Playbook 中定义的任务。4. 返回结果:任务执行结果返回到控制节点,供用户查看和分析。
4. Ansible 的常见使用场景• 配置管理:自动化服务器、应用程序和服务的配置。比如安装和配置 Nginx、MySQL 等软件。• 应用程序部署:自动化应用程序的部署过程,包括代码的推送、环境的配置等。• 基础设施管理:自动化管理虚拟机、容器等基础设施,进行系统更新和维护。• 云资源管理:通过与 AWS、Azure、Google Cloud 等云平台的集成,自动化云资源的创建、管理和销毁。• 持续集成和持续部署(CI/CD):与 Jenkins 等 CI/CD 工具结合,自动化软件构建、测试和部署