前言:之前想学点东西总是安不下心,最近疫情防控需要,在家隔离办公,心境稍渐平静,故学习一下ansible知识同各位网友分享,共同进步。同时也想“以写促学”,督促自己,也希望同各位网友沟通探讨共同进步。
一、什么是Ansible
Ansible 是一个开源软件供应,配置管理和应用程序部署工具。它可以在许多类 Unix 系统上运行,并且可以配置类似 Unix 的系统以及 Microsoft Windows。它包含自己的声明性语言来描述系统配置。
Ansible 由 Michael DeHaan 编写并于 2015 年被 Red Hat 收购.Ansible 是无代理的,通过 SSH 或远程 PowerShell 临时连接以执行其任务。
Ansible 的设计目标包括:
- 最小的性质。管理系统不应对环境施加额外的依赖性。
- 是一致的。使用 Ansible,应该能够创建一致的环境。
- 安全。Ansible 不会将代理部署到节点。受管节点上只需要 OpenSSH 和 Python。
- 非常可靠。在仔细编写时,Ansible 剧本可以是幂等的,以防止对受管系统的意外副作用。完全可能有一个写得不好的剧本,不是幂等的。
- 最少的学习。Playbooks 使用基于 YAML 和 Jinja 模板的简单描述性语言。
Ansible的技术架构
Ansible的架构模式
Ansible是由控制机和被管理机组成:控制机是用来安装Ansible工具软件和执行指令的服务器,被管理机是指运行业务的服务器,由控制机通过SSH进行管理。
Ansible的管理方式
Ansible是一个模型驱动管理器,支持多节点发布,远程任务执行,默认使用SSH远程连接,无需在被管理节点上安装附加软件。
Ansible集合了许多运维工具,实现了批量系统配置、批量程序部署,批量运行命令等功能,Ansible是基于模块工作的,本身没有批量部署的能力,真正干活的Ansible所运行的模块,ansible只是提供了一种框架
Ansible的任务读取流程
Ansible系统由控制主机对被管节点的操作方式可分为两类(ad-hoc)和(playbook)
- ad-hoc支持单个模块,支持批量执行单条命令;
- playbook通过多个task集合完成一类功能,可以理解为通过组合多条ad-hoc操作的配置文件;
Ansible功能特性
- 应用代码自动化部署
- 系统管理配置自动化
- 支持持续交付自动化
- 支持云计算、大数据平台(如aws、openstack,cloudstack、Vmware)等环境
- 轻量级、无需在客户端安装agent、更新时只需要在控制机上进行一次更新即可
- 批量任务执行可以写成脚本、不用分发到远程就可以执行
- 使用python编写、维护简单
- 支持非root用户管理操作、支持sudo
应用领域
- 配置管理
- 服务及时开通
- 应用部署
- 流程编排
- 监控告警
- 日志记录